无法在 java 8 中导入 java.util.stream

top*_*loz -2 java collections java-8 java-stream

我在导入时java.util.stream.*;
遇到问题编译我的代码给了我一个流()

“找不到符号错误”。

这是我的进口清单

import java.util.stream.*;
import java.util.*;
import java.lang.String;
import java.util.Arrays;
import java.nio.file.*;
import java.io.IOException;  
Run Code Online (Sandbox Code Playgroud)

这是我正在编译的代码

List<Beverage> l = cantine.stream()
                                .filter(p -> p.name.equals(nam))
                                .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

重要提示:我知道什么是“找不到符号错误”,所以请不要盲目关闭这个问题。

完整代码供参考

import java.util.stream.*;
import java.util.*;
import java.lang.String;
import java.util.Arrays;
import java.nio.file.*;
import java.io.IOException;

public class Enoteca{

    Map<String,Beverage> cantine;

    public Enoteca(){
        this.cantine = new HashMap<String,Beverage>();
    }


    public List<Beverage> byName(String nam){

        List<Beverage> l = cantine.stream()
                                .filter(p -> p.name.equals(nam))
                                .collect(Collectors.toList());
    }

    public static void main(String[] args){

        Enoteca e = new Enoteca();

        for(String s: args){
            Beverage b = new Beverage(s,"1987");
            e.cantine.put(s,b);
        }
        System.out.println(e.cantine);
    }
}

class Beverage{

    String name;
    String year;

    public Beverage(String name,String year){
        this.name = name;
        this.year = year;
    }

    public String getName(){
        return name;
    }

    @Override
    public String toString(){
        return name + " " +year;
    }
}
Run Code Online (Sandbox Code Playgroud)

VGR*_*VGR 8

编译器是正确的。 Map没有stream()方法。Map 的keySetvaluesentrySet方法返回的 Collections会这样做,但 Map 本身不会。

既然你想要一个List<Beverage>,我猜你想要cantine.values().stream()

  • 值得一提的是,与OP的假设相反,包含“import java.util.stream.*;”语句是完全无关的。同样,作为旁注,没有理由包含“import java.lang.String;”。 (3认同)