现在已知数据结构为HashMap<Integer, int[]>,想把里面的int[]抽取出来,合并成一个int[]。求最优算法

解决方案 »

  1.   

    如果每个int[]长度相同就好办
            HashMap<Integer, int[]> abcd = new HashMap<Integer, int[]>();
            abcd.put(0, new int[]{1,2,3});
            abcd.put(1, new int[]{4,5,6});
            
            int size = abcd.size();
            if(size>0)
            {
             int length = abcd.get(0).length;
             int[] efg = new int[length * size];
                for(int i=0; i<size; i++)
                {
                 int k = i * length;
                 int tmp[] = abcd.get(i);
                 for(int j=0; j<length; j++)
                 {
                 efg[k + j] = tmp[j];
                 }       
                }
                
                //输出结果
                length = efg.length;
                for(int i=0; i<length; i++)
                {
                 Log.i("shuxiang", "" + efg[i]);
                }
            }
      

  2.   


    HashMap<Integer, int[]> map;int len = 0;
    for (int[] i : map.values())
    len += i.length;
    int[] all = new int[len];
    int pos = 0;
    for (int[] i : map.values()) {
    System.arraycopy(i, 0, all, pos, i.length);
    pos += i.length;
    }
      

  3.   


    public static void main(String[] args) {
    HashMap<Integer, int[]> abcd = new HashMap<Integer, int[]>();
    abcd.put(0, new int[] { 1, 2, 3 });
    abcd.put(1, new int[] { 4, 5, 6 }); List<Integer> list = new ArrayList<Integer>();
    for (int[] value : abcd.values()) {
    for (int i : value) {
    list.add(i);
    }
    }
    //一定要用int[]的数组吗?如果不需要,上面的list就直接是你想要的了
    Integer[] result = (Integer[]) list.toArray(new Integer[list.size()]);
    for (Integer i : result) {
    System.out.println(i);
    }
    }