[알고리즘] 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