是否有可能在不创建副本的情况下对集合进行动态排序以对内容进行迭代?
更新:要排序的集合是一个只读列表。
最佳答案
使用 Streams API 你可以做到
yourCollection.stream()
.sorted(yourComparator)
.forEach(...);
这不会修改 yourCollection
并允许您按排序顺序迭代集合。但是,sorted
方法很可能会在幕后创建一个副本,因此您很可能会获得与创建副本、对副本排序并迭代排序后的副本相同的内存/cpu 开销复制自己。
(对于 Java 7 及更早版本,我认为 API 中没有“非侵入式”排序方法。如果不想修改原始集合,则必须显式复制。)
关于Java 集合。创建排序 View 而不创建副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28449704/