티스토리 뷰
List<Map> 타입의 변수를 정렬하는 예제는 다음과 같다.
import java.util.*;
class Computer implements Comparable{
int serial;
String owner;
Computer(int serial, String owner){
this.serial = serial;
this.owner = owner;
}
public int compareTo(Object o) {
return this.serial - ((Computer)o).serial;
}
public String toString(){
return serial+" "+owner;
}
}
public class CollectionsDemo {
public static void main(String[] args) {
List<Computer> computers = new ArrayList<Computer>();
computers.add(new Computer(500, "egoing"));
computers.add(new Computer(200, "leezche"));
computers.add(new Computer(3233, "graphittie"));
Iterator i = computers.iterator();
System.out.println("before");
while(i.hasNext()){
System.out.println(i.next());
}
Collections.sort(computers);
System.out.println("\nafter");
i = computers.iterator();
while(i.hasNext()){
System.out.println(i.next());
}
}
}
위 코드에 대한 결과는 아래와 같다.
before
500 egoing
200 leezche
3233 graphittie
after
200 leezche
500 egoing
3233 graphittie
위 소스코드에서 Computer 클래스가 Comparable를 구현하고 있다.
그 중에서 특히 compareTo(Obecjt o) 함수를 구현해야 sort가 가능하다.
클래스 Collectors는 다양한 클래스 메소드를 가지고 있다. 메소드 sort는 그 중의 하나로 List의 정렬을 수행한다. 다음은 sort의 시그니처다.
public static <T extends Comparable<? super T>> void sort(List<T> list)
sort의 인자인 list는 데이터 타입이 List이다. 즉 메소드 sort는 List 형식의 컬렉션을 지원한다는 것을 알 수 있다. 인자 list의 제네릭 <T>는 coparable을 extends 하고 있어야 한다. Comparable은 인터페이스인데 이를 구현하고 있는 클래스는 아래 메소드를 가지고 있어야 한다.
아래의 메소드는 이러한 제약 조건을 준수하기 위해서 구현한 메소드다.
public int compareTo(Object o) {
return this.serial - ((Computer)o).serial;
}
메소드 sort를 실행하면 내부적으로 compareTo를 실행하고 그 결과에 따라서 객체의 선후 관계를 판별하게 된다.
이렇게 해서 컬렉션즈 프레임워크에 대한 수업을 마무리 하겠다. 컬렉션즈 프레임워크는 효율적인 에플리케이션을 구축하기 위해서 매우 중요한 내용이다. 그런데 컬렉션은 단순히 사용법을 이해하는 것으로는 부족하고, 소위 알고리즘이나 자료구조(data structure)라고 불리는 분야에 대한 충분한 이해가 필요하다. 컬렉션즈 프레임워크는 이러한 분야의 성취를 누구나 쉽게 사용할 수 있도록 제공되는 일종의 라이브러리라고 할 수 있기 때문이다.
출처 : https://opentutorials.org/course/1293/6446
'Java' 카테고리의 다른 글
java keytool 을 이용한 SSL 인증서 keystore 생성방법 (0) | 2017.12.27 |
---|---|
초 간단 외부(네이버 메일서버) SMTP 모니터링 (0) | 2017.12.14 |
Java Socket 통신프로그램 소스 (0) | 2017.09.14 |
개발 관련 용어 해설 모음(계속 업데이트 예정) (0) | 2017.09.13 |
Java에서 Map 안의 Key와 Value 를 꺼내는 방법 (0) | 2017.09.13 |
- Total
- Today
- Yesterday
- 클래스로더
- redissonclient
- redisson
- AES Encryption
- svn
- AES with AWS KMS
- RegExp
- Eclipse
- AWS KMS
- 오라클
- spring
- SSL
- 마스킹
- 이클립스
- AES 복호화
- STS
- 자바 정규식
- Oracle
- 스프링
- Java
- AES 암호화
- 톰캣
- 아파치
- 휴대폰번호 마스킹
- commit
- AES Decryption
- 아파치 톰캣 연동
- apache
- jvm특징
- Tomcat
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |