Pada dasarnya, saya memiliki ArrayList<ArrayList<Integer>> = [[-1,-4], [3,2], [0,-4], [-3,2]. Saya ingin menggunakan aliran untuk menelusuri setiap ArrayList dan menambahkan elemen bersama-sama seperti: [[-5],[5],[-4], [-1]]. Lalu saya ingin mengubahnya menjadi array int[] dan berakhir dengan ini: [-5, 5, -4, -1].

Saya memiliki ini sejauh ini:

ArrayList<ArrayList<Integer>> outerNums = new ArrayList<ArrayList<Integer>>();
        ArrayList<Integer> innerNums0 = new ArrayList<>();
        ArrayList<Integer> innerNums1 = new ArrayList<>();
        ArrayList<Integer> innerNums2 = new ArrayList<>();
        ArrayList<Integer> innerNums3 = new ArrayList<>();
        innerNums0.add(-1);
        innerNums0.add(-4);
        innerNums1.add(3);
        innerNums1.add(2);
        innerNums2.add(0);
        innerNums2.add(-4);
        innerNums3.add(-3);
        innerNums3.add(2);
        //
        outerNums.add(innerNums0);
        outerNums.add(innerNums1);
        outerNums.add(innerNums2);
        outerNums.add(innerNums3);
        
        
        
        System.out.println(res(outerNums));
    }
    
    public static int[] res(ArrayList<ArrayList<Integer>> innerNums) {
        
        System.out.println(innerNums);
        //Need to use both map and reduce
        int[] result = innerNums.stream().map().reduce(); //not sure what to do here.
        
        return result;
        
    }
-2
AetherRemnant 1 Juli 2021, 21:57

2 jawaban

Jawaban Terbaik

Saya percaya sesuatu seperti ini adalah apa yang Anda cari?

List<List<Integer>> list = List.of(List.of(-1,-4), List.of(3,2), List.of(0,-4), List.of(-3,2));
int[] result = list.stream()
  .map(innerList -> innerList.stream().reduce(0, Integer::sum))
  .mapToInt(Integer::intValue)
  .toArray();
System.out.println(Arrays.toString(result));

Keluaran

[-5, 5, -4, -1]
1
Tim Hunter 1 Juli 2021, 19:41

Untuk setiap daftar bagian dalam, alirkan dan jumlahkan sebelum mengumpulkan jumlah ke dalam array.

int[] result = outerNums.stream()
        .mapToInt(innerArrayList -> innerArrayList.stream()
                .mapToInt(i -> i)
                .sum())
        .toArray();

Catatan: mapToInt mengembalikan IntStream.

1
user7 1 Juli 2021, 19:04