集合操作类--包(数组实现)



package com.opensource.collections;

/**
* 对整数元素集合进行操作
* 使用数组实现,当元素数量大时,效率较低
*/
public class IntArrayBag implements Cloneable
{
//IntArrayBag类的不定式:
//1.包中元素的数目存放在实例变量manyItems中.
//2.对于一个空包,不需要关心存放的是什么数据,对于非空包,
//包中的元素存放在data[0]到data[manyItems-1]中,
//并且不需要关心data中其他部分的内容.

private int[] data; //元素集合
private int manyItems; //元素数量

/**
* 使用默认的10容量初始化一个空包
*/
public IntArrayBag()
{
final int INITIAL_CAPACITY = 10;
manyItems = 0;
data =new int[INITIAL_CAPACITY];
}

/**
* 使用指定大小初始化一个空包
* @param initialCapacity
*/
public IntArrayBag(int initialCapacity)
{
if(initialCapacity < 0)
throw new IllegalArgumentException
("initialCapacity is negative:"+initialCapacity);
manyItems = 0;
data = new int[initialCapacity];
}

/**
* 往包中添加元素
* @param element
*/
public void add(int element)
{
if(manyItems == data.length)
{
//将容量翻倍加1,即便manyItems为0也是如此。然而
//如果manyItems*2+1超过Integer.MAX_VALUE
//将会出现算术溢出并且包失败
ensureCapacity(manyItems*2+1);
}
data[manyItems] = element;
manyItems++;
}

/**
* 将另一个包的内容添加到该包中
* @param addend
*/
public void addAll(IntArrayBag addend)
{
//如果addend为null,那么将抛出NullPointerExceptino
//如果总项数超过Integer.MAX_VALUE,将会出现算术溢出并且包失败
ensureCapacity(manyItems+addend.manyItems);
System.arraycopy(addend.data, 0, data, manyItems, addend.manyItems);
manyItems += addend.manyItems;
}

/**
* 复制包对象
*/
public Object clone()
{
//复制一个IntArrayBag对象
IntArrayBag answer=null;
try
{
answer = (IntArrayBag)super.clone();
}catch(CloneNotSupportedException e)
{
e.printStackTrace();
}
answer.data = (int[])data.clone();

return answer;
}

/**
* 计算包中特定元素出现次数
* @param target
* @return
*/
public int countOccurrences(int target)
{
int answer = 0;

for(int element:data)
{
if(element == target)
answer++;
}
return answer;
}

/**
* 改变包的容量
* @param minimumCapacity
*/
public void ensureCapacity(int minimumCapacity)
{
int[] biggerArray;
if(data.length < minimumCapacity)
{
biggerArray = new int[minimumCapacity];
System.arraycopy(data, 0, biggerArray, 0, manyItems);
data = biggerArray;
}
}

/**
* 获取该包的当前容量
* @return
*/
public int getCapacity()
{
return data.length;
}

/**
* 删除包中的目标元素,如果不存在,返回false
* @param target
* @return
*/
public boolean remove(int target)
{
int index; //target在data数组中的位置
//首先,将index设置成target在data数组中的位置
//最小可为0,最大可为manyItems-1.
//如果target不在数组中,那么将index设置成manyItesms;
index = 0;
while((index < manyItems) && (target != data[index]))
{
index++;
}
if(index == manyItems)
//没有找到target,所以没有删除任何内容
return false;
else
{
manyItems--;
data[index]=data[manyItems];
return true;
}
}

/**
* 获取包中的元素数量
* @return
* manyItems
*/
public int size()
{
return manyItems;
}

/**
* 将该包的当前容量减小成为它的实际大小
*/
public void trimToSize()
{
int[] trimmedArray;
if(data.length != manyItems)
{
trimmedArray = new int[manyItems];
System.arraycopy(data, 0, trimmedArray, 0, manyItems);
data = trimmedArray;
}
}

/**
* 合并两个包对象
* @param b1
* 包对象
* @param b2
* 包对象
* @return
* answer
*/
public static IntArrayBag union(IntArrayBag b1,IntArrayBag b2)
{
//如果b1或者b2为null,那么抛出NullPointerException.
//如果总项数超过Integer.MAX_VALUE,将会出现算术溢出并且包失败.
IntArrayBag answer = new IntArrayBag(b1.getCapacity()+b2.getCapacity());
System.arraycopy(b1.data, 0, answer.data, 0, b1.manyItems);
System.arraycopy(b2.data, 0, answer.data, b1.manyItems, b2.manyItems);
answer.manyItems = b1.manyItems+b2.manyItems;
return answer;
}

}

5G NR峰值速率计算5G NR典型下行峰值速率估算 Update by Michael @ 15th June 2020 prepared by cottage98@163.com LTE ID 参数配置 操作 SCS(30K) SCS(60K) SCS(120K) SCS(30K) SCS(60K) SCS(120K) SCS(15K) 1 总带宽(BW)MHz 下拉选择 100 100 100 100 100 100 20 2 载波带宽(SCS)KHz 下拉选择 30 60 120 30 60 120 15 3 每时隙数 自动计算 2 4 8 2 4 8 1 4 每时隙符号数 固定值 14 14 14 14 14 14 14 5 PRB个数 自动计算 273 135 66 273 135 66 106 6 单PRB包含载波数量 固定值 12 12 12 12 12 12 12 7 配置选项 下拉选择 2.5ms单周期 2.5ms单周期 2.5ms单周期 2.5ms双周期 2.5ms双周期 2.5ms双周期 5ms单周期 8 时隙配置 自动计算 DDDSU DDDSU DDDSU DDDSUDDSUU DDDSUDDSUU DDDSUDDSUU DDDDDDDSUU 9 特殊配比 自动计算 10:2:2 10:2:2 10:2:2 10:2:2 10:2:2 10:2:2 6:4:4 10 下行符号占比 自动计算 74.29% 74.29% 74.29% 64.29% 64.29% 64.29% 74.29% 11 下行资源开销 设定值 14.00% 14.00% 14.00% 14.00% 14.00% 14.00% 14.00% 12 每秒下行符号数 自动计算 68144731 67395888 65898202 58971931 58323888 57027802 13229563 13 MIMO层数(MS=2T4R)Rank=4 下拉选择 4 4 4 4 4 4 4 14 调制阶数(256QAM=8) 下拉选择 256QAM 256QAM 256QAM 256QAM 256QAM 256QAM 256QAM 15 编码类型 下拉选择 MCS22 MCS25 MCS25 MCS27 MCS27 MCS27 MCS27 16 编码码率(MCS27最高92.58%) 自动计算 73.63% 86.43% 86.43% 92.58% 92.58% 92.58% 92.58% 17 误码率BLER(功率控制收敛值) 自动计算 10.00% 10.00% 10.00% 10.00% 10.00% 10.00% 10.00% 18 理论峰值速率(Gbps) 自动计算 1.24 1.44 1.41 1.35 1.34 1.31 0.30 19 最短可调度时隙时间(ms) 自动计算 0.5 0.25 0.125 0.5 0.25 0.125 1 20 RTT时延(ms) 自动计算 4.1 4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>