我有以下情况:
SortedSet<MyClass> sortedSet = ...;
SortedSet<HeavyToCompare> newSet = ...;
for (MyClass m: sortedSet ){
newSet.add(m.getHeavyToCompare())
}
我想避免对 newSet 重新排序,因为 HeavyToCompare 比较起来非常昂贵。相反,我想保留插入顺序(与原始集相同)。我知道我可以创建一个始终返回 -1 的简单比较器,但这违反了 compareTo 的合同。这里的最佳做法是什么?我需要类似的东西
SortedSet<K> result = Sets.transformAndKeepOrder(SortedSet<T> from, Function<T, K> function)
更新:我无法更改 SortedSet,这是一项要求