Buf*_*lls 5 java-8 java-stream
import java.util.Comparator;
import java.util.PriorityQueue;
public class TestPQ {
public static void main(String[] args){
Comparator<String> comparator = new StringLengthComparator();
PriorityQueue<String> queue = new PriorityQueue<String>(10, comparator);
queue.offer("Short");
queue.offer("ABCahahahha");
queue.offer("lululu");
queue.stream().map( s-> {
System.out.println("queue: "+ s);
return s;
});
}
}
Run Code Online (Sandbox Code Playgroud)
我有这个代码,我希望我会看到"短片","lululu"和"ABCahahahha"被打印出来.但我没有看到他们.我的代码出了什么问题?编译很好.我正在使用java 8编译器和运行时.
您没有任何终端操作消耗您的流.没有任何反应.map()是一种中间操作,不应该有副作用.你的代码应该是什么
queue.stream().forEach(s-> {
System.out.println("queue: "+ s);
});
Run Code Online (Sandbox Code Playgroud)
该图()方法本身中间并没有强制的消费Stream所以这是一个非常糟糕的主意,把副作用出现.
在这种情况下,您应该使用专用的forEach()方法:
queue.stream()
.forEach(s -> System.out.println("queue: " + s));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
251 次 |
| 最近记录: |