日期:2014-05-20  浏览次数:20762 次

JAVA中有没有比这更好的处理int数组的方法
各位请问一下,根据项目需求现有一组int[]数据,如:int[] data=new int[100]; 
data= new int[]{12873,12,43,54,6,990,1232,4000,54375,……};
现有的方法是通过index++把数据赋给相应的变量(注:因为int数组数据必须赋给对应的变量)
int index = 0;
  数组数据 变量  
data [index++] ——TimeRefMs;  
data [index++] —— OffsetIncl;
data [index++] —— MobOffset;
data [index++] —— RefPN;  
data [index++] —— RefPilotStrength;
data [index++] —— BAND_CLASS;
data [index++] ——CDMA_FREQ;
data [index++] —— BASE_ID;
data [index++] —— SID;
data [index++] —— NID;
data [index++] —— TOTAL_RX_PWR;
data [index++] —— NumPilots;
for (int I = 0; I < NumPilots; I++)
{
data [index++] —— PilotPN;
data [index++] —— PnPhase;
data[index++]——Strength;
data[index++]——RmsErrPhase;
}
大家都知道用自增++取数据,在项目里不好扩展、执行效率也很低,有没有比这更好 的方法,请各位大侠指点一下。谢谢!

------解决方案--------------------
List<Integer> list = new xxxxList<Integer>();
.......

list.toArray();
------解决方案--------------------
Java code
那就使用map吧
Map<String, Integer> map = new LinkedHashMap<String, Integer>();
把数组数据保存到map中
map.put("TimeRefMs", data[index++]);
map.put("OffsetIncl", data[index++]);
map.put("MobOffset", data[index++]);
...

取数据的时候
int TimeRefMs = map.get("TimeRefMs");
...

或者把数组数据用一个类封装保存
class Data {
    int TimeRefMs;
    int OffsetIncl;
    int MobOffset;
    ...

    public Data(int[] data) {
        index = 0;
        TimeRefMs = data[index++];
        ...
    }
}

------解决方案--------------------
List<Integer> dataList = new ArrayList<Integer>();
dataList.add(TimeRefMs);
dataList.add(OffsetIncl);
...
dataList.add(NumPilots);
for(int i = 0; i < NumPilots; i++) {
dataList.add(PilotPN);
dataList.add(PnPhase);
dataList.add(Strength);
dataList.add(RmsErrPhase);
}
//Object[] data = dataList.toArray();//这样得到的是Object[]
Integer[] data = new Integer[dataList.size()];
data = dataList.toArray(data);
------解决方案--------------------
用哈希表