컬렉션들 list, map, set ... 난 집어넣고 바로 최댓값이나 최솟값을 뽑아내는 그런 간편한게 필요한데..? 싶으면
우선순위 큐를 사용하면 된다. 힙을 이용하여 구현이 되어있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | static class xy implements Comparable<xy>{ String x; int y=0; xy(String x, int y) { this.x = x; this.y = y; } @Override public int compareTo(xy o) { if(this.y>o.y) return 1; else return -1; } } public static void main(String[] args) { PriorityQueue<Integer> que = new PriorityQueue<>(); // 기본적으로 우선순위 큐는 오름차순을 가지고 있음 Collections.reverseOrder() 를 괄호에 넣어서 반대로 가능하다. que.add(5); que.add(6); que.add(8); System.out.println(que.peek()); //5를 return 삭제는 하지 않음 System.out.println(que.poll()); //5를 삭제하면서 5를 return 해줌 System.out.println(que.peek()); //5가 삭제됨에따라 6이 출력 됨 que.remove(8); //8 삭제 System.out.println(que.size()); //크기인 1이 출력됨 6만 남았기 때문 //이곳에 comparable를 바로 익명클래스로 정의 가능. 이 경우엔 xy 내부에 정의 했음. 마찬가지로 이 상황에서 reverseOrder를 넣어주면 xy에 오름차순으로 정의했으니 내림차순으로 정렬됨 //xy와 같이 클래스를 넣게되면 comparable 없이는 오류가 떠서 반드시 정의를 해주어야 함 PriorityQueue<xy> que_2 = new PriorityQueue<>(Collections.reverseOrder()); que_2.add(new xy("a", 1)); que_2.add(new xy("b", 2)); que_2.add(new xy("c", 3)); System.out.println(que_2.peek().y); } | cs |
'Java' 카테고리의 다른 글
Java HashMap 메서드 computeIfAbsent (0) | 2020.08.27 |
---|---|
Java String 메서드 정리 (계속해서 추가) (0) | 2020.08.25 |
Java 형변환 정리 (0) | 2020.08.19 |
Set 에 대하여 (0) | 2020.08.18 |
Java 조합과 순열 (0) | 2020.08.18 |