Java 集合。创建排序 View 而不创建副本

标签 java memory collections comparator

是否有可能在不创建副本的情况下对集合进行动态排序以对内容进行迭代?

更新:要排序的集合是一个只读列表。

最佳答案

使用 Streams API 你可以做到

yourCollection.stream()
              .sorted(yourComparator)
              .forEach(...);

这不会修改 yourCollection 并允许您按排序顺序迭代集合。但是,sorted 方法很可能会在幕后创建一个副本,因此您很可能会获得与创建副本、对副本排序并迭代排序后的副本相同的内存/cpu 开销复制自己。

(对于 Java 7 及更早版本,我认为 API 中没有“非侵入式”排序方法。如果不想修改原始集合,则必须显式复制。)

关于Java 集合。创建排序 View 而不创建副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28449704/

相关文章:

java - 无法运行已编译的 Java 代码 - 无法找到或加载主类

java - Netbeans,maven 项目 lombok - 找不到符号

java - Netbeans 向导,方法 storeSettings 运行两次

c# - 关于在c#中处理Arraylists的问题

java - 将列表的第一个元素移动到末尾

c# - 优化 C# 代码片段、ObservableCollection 和 AddRange

java - 使用 java regex 匹配不包含单词的行

python - 清除通过在 IPython 中绘图分配的内存

python - 求更高效的python numpy ravel+reshape

python - 字典的 clear() 方法是否会从内存中删除所有与项目相关的对象?