使用java 8将列表转换为set

Tus*_*nne 2 java collections

最近我遇到了Java 8的新语法,可用于将列表转换为集合:

Set<Integer> myset = mylist.stream().collect(Collectors.toSet()));
Run Code Online (Sandbox Code Playgroud)

我想知道使用这种方法将列表转换为传统方式的集合的优势(通过将其作为参数传递给HashSet).

Mic*_*rry 8

优点是,它变得更容易(或更准确地说,需要更少的语法变化)来同时执行其他功能操作.

稍后说你只想要集合中的偶数,你可以用过滤器做到这一点:

Set<Integer> myset = mylist.stream()
        .filter(p -> p%2==0)
        .collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)

如果你以传统方式完成它,那么你需要将它转换为上面的语法,或者编写一个额外的循环来完成并只提取你想要的值.

(这并不意味着它总是更好 - 在某些情况下,您可能希望阻止某人在以后更改代码以过滤掉值,在这种情况下,您可能会认为传统方式仍然更可取.)

  • 所以只是将列表转换为集合,使用 java 8 并没有比传统方式提高性能,我应该坚持使用传统方式来实现相同的目标。 (2认同)