Collectors.toList() 显示错误“预期 3 个参数,但找到 1 个”

nis*_*sth 5 java collections java-stream

为什么我的收藏Collectors.toList()显示此错误:

预期 3 个参数,但发现 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());
    }
}
Run Code Online (Sandbox Code Playgroud)

Arv*_*ash 1

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));
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

[1, 4, 9, 16, 25]
Run Code Online (Sandbox Code Playgroud)

注意:请确保

  1. 使用泛型类型而不是原始类型。
  2. 比较列表的大小以避免ArrayIndexOutOfBoundsException

  • 我很感激您向firstList 和secondList 添加了泛型类型。同样,我认为 `Cityeration c` 应该是 `Cityeration&lt;Integer&gt; c`。 (2认同)