Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Collectors.toList() showing error "Expected 3 argument but found 1"

Why is my collect Collectors.toList() showing this error:

Expected 3 argument but found 1

package com.knoldus;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import java.util.stream.IntStream;


interface Cityeration<T> {
    public abstract List<T> Cityeration(List<T> first, List<T> Second);
}

public class ListMultiplication {
    public static void main(String s[]) {
        List firstList = Arrays.asList(1, 2, 3, 4, 5);
        List secondList = Arrays.asList(1, 2, 3, 4, 5);

        Cityeration c = (first, second) -> IntStream.range(0, first.size())
                        .map(i -> first.get(i) * second.get(i))
                        .collect(Collectors.toList());
    }
}
like image 311
nischal vasisth Avatar asked Nov 07 '22 09:11

nischal vasisth


1 Answers

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

interface Cityeration<T> {
    public abstract List<T> cityeration(List<T> first, List<T> Second);
}

public class ListMultiplication {
    public static void main(String s[]) {
        List<Integer> firstList = Arrays.asList(1, 2, 3, 4, 5, 6);
        List<Integer> secondList = Arrays.asList(1, 2, 3, 4, 5);

        Cityeration<Integer> c = (first, second) -> IntStream
                .range(0, first.size() <= second.size() ? first.size() : second.size())
                .map(i -> first.get(i) * second.get(i)).boxed().collect(Collectors.toList());
        System.out.println(c.cityeration(firstList, secondList));
    }
}

Output:

[1, 4, 9, 16, 25]

Note: Make sure to

  1. use generic types instead of raw types.
  2. compare the sizes of the lists to avoid ArrayIndexOutOfBoundsException.
like image 180
Arvind Kumar Avinash Avatar answered Nov 12 '22 09:11

Arvind Kumar Avinash