Java十大简单性能优化(26)

// Pre-Java 8

Set result =newHashSet();

for(Object candidate : someSet)

if(someOtherSet.contains(candidate))

result.add(candidate);

// Even Java 8 doesn't really help

someSet.stream()

.filter(someOtherSet::contains)

.collect(Collectors.toSet());

有人可能会认为函数式编程和Java 8将帮助您编写更简单 , 更简洁的算法 。 不一定是真的 。 您可以将命令性的Java-7循环转换为功能性的Java-8 Stream集合 , 但是您仍在编写相同的算法 。 编写类似SQL的表达式是不同的 。 这个…

SomeSet INTERSECT SomeOtherSet

…可以由实施引擎以1000种方式实施 。 正如我们今天所了解的EnumSet , 在运行INTERSECT操作之前将这两个集合自动转换为明智的选择也许是明智的 。 也许我们可以并行化这一点 , INTERSECT而无需对Stream.parallel()

推荐阅读