[알고리즘] TreeSet 사용시 주의사항
2024. 3. 19. 08:15ㆍ알고리즘 풀이/Java
import java.util.Comparator;
import java.util.TreeSet;
public class Test {
static class Value{
int value;
public Value(int value) {
super();
this.value = value;
}
@Override
public String toString() {
return String.valueOf(value);
}
}
public static void main(String[] args) {
TreeSet<Value> treeSet = new TreeSet<>(new Comparator<Value>() {
// 오름차순 정렬
@Override
public int compare(Value o1, Value o2) {
return o1.value - o2.value;
}
});
treeSet.add(new Value(1));
treeSet.add(new Value(5));
System.out.println(treeSet);
// first로 객체의 멤버변수 값 변경
treeSet.first().value = 6;
System.out.println(treeSet);
// 빼고 넣기
treeSet.add(treeSet.pollFirst());
System.out.println(treeSet);
// 값을 빼고 변경하고 다시 넣기
Value value = treeSet.pollFirst();
value.value = 0;
treeSet.add(value);
System.out.println(treeSet);
}
}
위와 같이 객체를 first로 받아 정렬에 사용되는 값을 변경하게 되면 정렬이 안된다!!!
1. 값 변경 작업을 하고 다시 빼고 넣어주거나
2. 값을 빼고 변경하고 다시 넣어주어야 한다.
2번이 훨씬 더 자연스럽다!!!!!
'알고리즘 풀이 > Java' 카테고리의 다른 글
[알고리즘] 바이러스 검사 (0) | 2024.03.20 |
---|---|
[알고리즘] 새로운 게임 2 (0) | 2024.03.19 |
[알고리즘] 파라메트릭 서치 꿀팁 (0) | 2024.03.14 |
[알고리즘] 국가행정 (0) | 2024.03.13 |
[알고리즘] 국가행정 (0) | 2024.03.13 |