Java 8 查找第一和遇到顺序
findFirst
的 JavaDocs 表示,如果流有遭遇顺序,则始终返回第一个元素,但如果流没有遭遇顺序,则可能会返回任何元素。
我试图演示这如何在没有遇到顺序的流上工作,但我无法让它返回除实际第一个元素之外的任何内容。
我尝试将元素添加到 没有定义的遭遇顺序的 中:Set
Set<String> words = new HashSet<>();
words.addAll(Arrays.asList("this", "is", "a", "stream", "of", "strings"));
Optional<String> firstString = words.stream()
.findFirst();
System.out.println(firstString);
每次我跑步时,我都会得到第一个字符串。然后我尝试在将其添加到之前在 上做一个,但这并没有改变任何东西。a
Collections.shuffle
List
Set
List<String> wordList = Arrays.asList("this", "is", "a", "stream", "of", "strings");
words = new HashSet<>();
words.addAll(wordList);
firstString = words.stream()
.findFirst();
System.out.println(firstString);
我仍然每次都找回这个词。a
然后我尝试使用 from 的方法,该方法声称返回没有遇到顺序的流,但没有区别:unordered
BaseStream
firstString = Stream.of("this", "is", "a", "stream", "of", "strings")
.unordered()
.findFirst();
System.out.println(firstString);
现在我每次都明白这个词。我错过了什么吗?有没有办法证明在无序流上返回不同的值?this
findFirst