Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- spring
- jenkins install
- Linux
- jenkins 설치
- jenkins github 연동
- error
- subnetmask
- vue.js
- jenkins maven
- JavaScript
- IntelliJ
- CI/CD
- Spring Boot
- 리액트
- Jenkins
- Jenkins Pipeline
- jpa
- REACT
- nginx
- docker network
- MySQL
- grafana
- jenkins jdk
- MongoDB
- 리눅스
- Docker
- grpc
- java
- gradle
- jenkins github
Archives
- Today
- Total
뭐든 즐기면서 ;)
JAVA SortedSet 정렬 방법 / JAVA SortedSet Comparable 본문
728x90
SortedSet
Set인터페이스를 구현한 클래스 중 하나입니다. 정렬 가능한 Set 클래스라고 생각하시면 됩니다.
Set은 두 가지 특징이 있고, SortedSet과 Comparable 인터페이스를 이용하여 두 특징에 반하는 기능을 수행하게 할 수 있습니다.
- 요소의 저장된 순서가 유지되지 않습니다. 출력할 때 요소의 순서가 랜덤으로 출력됩니다.
- 같은 요소를 중복 저장하지 않습니다.
- SortedSet 클래스와 Comparable 인터페이스를 구현하는 클래스 내에서 compareTo를 Override 이용하여 중복 저장 및 정렬이 가능하게 할 수 있습니다.
Comparable 인터페이스를 구현한 클래스
- compareTo 메소드를 Override해줍니다. return 값에 따라 정렬이 됩니다.
class Number implements Comparable<Number> {
private final int key;
private final int value;
Number(int key, int value) {
this.key = key;
this.value = value;
}
public int getKey() {
return this.key;
}
public int getValue() {
return this.value;
}
@Override
public int compareTo(Number o) {
// 오름 차순 ( 내림차순으로 하고싶을 경우, return 1과 -1위치를 바꿔준다. )
// return 0;일 경우 중복값인 걸로 인식하여 저장하지 않습니다.
if(this.key < o.getKey()) {
return -1;
} else if (this.key == o.getKey()) {
return 0;
} else {
return 1;
}
}
}
SortedSet<E>
- 요소 저장 후 출력을 통하여 저장된 순서를 확인합니다.
public class SortedSetSample {
public static void main (String args[]) {
int[][] numbers = {{80,20},{50,40},{30,10}, {60,10}, {60,11}};
SortedSet<Number> set = new TreeSet<>();
for(int[] number: numbers) {
Number num = new Number(number[0],number[1]);
//SortedSet에 Number요소 저장
set.add(num);
}
//정렬된 값 확인
Iterator<Number> iter = set.iterator();
Number num = null;
while(iter.hasNext()) {
num = iter.next();
System.out.println("key : " + num.getKey() + " value : " + num.getValue());
}
}
}
출력 확인
- key값이 중복되는 60은 저장하지 않은 것을 확인할 수 있습니다.
- 만약, 값이 같아도 저장하고 싶다면 comparTo 메소드를 수정해 줘야 합니다.
중복값 저장하기
- return 0;이 아닌 return 1;로 수정합니다.
@Override
public int compareTo(Number o) {
// 오름 차순 ( 내림차순으로 하고싶을 경우, return 1과 -1위치를 바꿔준다. )
// return 0;일 경우 중복값인 걸로 인식하여 저장하지 않습니다.
if(this.key < o.getKey()) {
return -1;
} else if (this.key == o.getKey()) {
return 1; // 기존 배열의 순서대로 저장하기
} else {
return 1;
}
}
출력 확인
- key값이 60으로 중복되는 것이 있음에도, 기존 배열 순서대로 저장된 것을 볼 수 있습니다.
728x90
'BACK > JAVA' 카테고리의 다른 글
Tomcat java version 확인 (0) | 2023.05.25 |
---|---|
HashMap getOrDefault 함수 (0) | 2022.07.05 |
JAVA Servlet API (0) | 2022.05.03 |
Java 올림 / Java Math / Java Math ceil (0) | 2022.03.21 |
JAVA 함수형 인터페이스란 (0) | 2021.11.15 |
Comments