java - 列表接口(interface)排序方法和流接口(interface)排序方法有什么区别?

标签 java list sorting java-8 java-stream

我有兴趣根据对象中的日期属性对对象列表进行排序。我可以使用列表排序方法。

list.sort( (a, b) -> a.getDate().compareTo(b.getDate()) );

或者我可以使用流排序方法

List<E> l = list.stream()
                .sorted( (a, b) -> a.getDate().compareTo(b.getDate()))
                .collect(Collectors.toList());

在上述两个选项中,我们应该使用哪个,为什么?

我知道前一个会更新我的原始列表,后一个不会更新原始列表,而是给我一个全新的列表对象。

所以,我不在乎我的原始列表是否更新。那么哪一个是不错的选择,为什么?

最佳答案

如果您只需要对List进行排序,并且不需要任何其他流操作(例如过滤、映射等...),则没有必要添加创建的开销一个Stream,然后创建一个新的List。仅对原始 List 进行排序会更有效。

关于java - 列表接口(interface)排序方法和流接口(interface)排序方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55991141/

相关文章:

python - 根据给定顺序对列表进行排序

java - 如何在 world wind NASA 中添加小部件(Textfield、Combobox 等)

java - 在Java中将数组设置为final(不可变)有什么用处吗?

java - Java中不同 map 投影之间的转换

python - Tensorflow:张量的重复(平铺)元素

python - 如何释放对象中的 Python 列表?

r - 不同索引的子集列表

java - 使用 contains() 方法时出现奇怪的异常

arrays - 如何使用 Data.Vector.Generic.Mutable 进行排序?

javascript - 在数组中查找元素并返回父元素