맞춤형 비교기를 사용하여 세트를 메모리에 복제하지 않고 주문해야합니다.JAVA에서 중복되지 않은 세트 주문
순진 구현은 다음과 같습니다
Set<MyClass> newSet = new TreeSet<>(myComparator);
newSet.addAll(oldSet);
하지만이 경우에도 제한된 시간 동안, 나는 메모리에 두 세트를해야합니다, 그 의미합니다 : (정렬되지 않은) oldSet 및 newSet을 (주문). 그들은 매우 커질 것이므로 이것을 피하고 싶습니다.
나는 이런 식으로 뭔가를 수행하고 싶습니다 : 같은 구조 TreeSet에 대한 생성자가 없기 때문에 실제로 가능하지 않다
oldSet = new TreeSet<>(oldSet, myComparator);
합니다.
해결책 일 수 있습니까?
Iterator<MyClass> it = oldSet.iterator();
Set<MyClass> newSet = new TreeSet<>(myComparator);
while(it.hasNext())
{
newSet.add(it.next());
it.remove();
}
뭔가 더 좋습니다.
당신이
@kai'it.remove()'가 없으면 OP는 한 번에 두 개의 풀 세트를 메모리에 가지고 있는데, 이것은 그의 질문에 관한 것입니다. –