在java中将数组块添加到数组列表中

时间:2017-11-02 14:09:19

标签: java arrays

我想将一个数组(带有随机整数值)分解为相同大小的较小块,并根据基于数组的值分配元素。例如,如果我有一个大小为9的数组,并希望将其分成3个块,则将0到3之间的数字分配给第一个块,将4-6之间的数字分配给第二个块,将其余数字分配给第三个块。 我必须迭代单独的块(可以暂时保留)。最后将所有块添加到数组列表中。

int[] originalarray = init[9];
     int number = original.length/numerToDivede;
Arraylist<int[]> bigarray = new Arraylist<>();
                int[] array1= null;
                int[] array2;
                int[] array3;

                for(int i=0;i<originalarrays.length-1;i++){
                    if(originalArrays[i] < numberTodivide){
                        // add to the first array1;
                    }else if (originalArrays[i] < 2*numberTodivide){
                      // add to the second array
                    }else
                   // add to the third array

这是我接近的方式,但每件事都是硬编码的。我动态地做吗?感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

希望这会对你有所帮助

List<Integer> bigarray = new ArrayList<>();
bigarray.addAll(Arrays.asList(1,2,3,4,1,2,3,33,3,4,1,2,1));
List<List<Integer>> outputList = new ArrayList<>();

while(!bigarray.isEmpty()){
    List<Integer> tmpList = bigarray.stream()
    .filter(item -> item == bigarray.get(0))
    .collect(Collectors.toList());
    //filter all item has been collect this time
    List<Integer> filter = bigarray.stream().filter(item -> item != bigarray.get(0)).collect(Collectors.toList());
    bigarray.clear();
    bigarray.addAll(filter);

    // add the result in this time
    outputList.add(tmpList);
}

outputList.forEach(list -> list.forEach(item -> System.out.print(item+", ")));