【问题标题】:Can't import java.util.stream in java 8无法在 java 8 中导入 java.util.stream
【发布时间】:2020-06-30 19:34:31
【问题描述】:

我在导入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;  

这是我正在编译的代码

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

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

完整代码供参考

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;
    }
}

【问题讨论】:

  • 你是怎么编译的,说一下细节?使用javac 或任何框架或任何IDE?提及他们的版本细节。 cantine的类型是什么?
  • 您使用的是哪个 IDE?您是否在 IDE 中进行了正确的配置?
  • cantine的类型是什么?
  • Map 没有 stream() 方法。 Map 的 keySet、values 和 entrySet 方法返回的 Collections 可以,但 Map 本身没有。
  • @VGR,这听起来应该是一个答案!

标签: java collections java-8 java-stream


【解决方案1】:

编译器是正确的。 Map 没有 stream() 方法。 Map 的 keySetvaluesentrySet 方法返回的 Collections 可以,但 Map 本身没有。

既然你想要List&lt;Beverage&gt;,我猜你想要cantine.values().stream()

【讨论】:

  • 值得一提的是,与 OP 的假设相反,包含 import java.util.stream.*; 语句是完全不相关的。同样,作为旁注,没有理由包含import java.lang.String;
  • i 包含所有上述导入,因为之前的线程已被主持人关闭,告诉我包含 java.util.stream.*;即使这无关紧要,我也提到我将其包括在内只是为了避免线程再次关闭而没有答案。