私は次の場合があります:
SortedSet<MyClass> sortedSet = ...;
SortedSet<HeavyToCompare> newSet = ...;
for (MyClass m: sortedSet ){
newSet.add(m.getHeavyToCompare())
}
HeavyToCompareは比較するのに非常に費用がかかるため、newSetの並べ替えは避けたいと思います。むしろ、挿入順序を維持したい(つまり、元のセットと同じです)。常に-1を返す単純なコンパレータを作成できることは理解していますが、これはcompareToの契約を破ります。ここでのベストプラクティスは何ですか?私は次のようなものが必要になります
SortedSet<K> result = Sets.transformAndKeepOrder(SortedSet<T> from, Function<T, K> function)
更新:SortedSetを変更できません。これは要件です。