@Comparable, Comparator
정렬 기준을 정할때 사용
Comparable | Comparator | |
패키지 | java.lang | java.util |
메소드 | compareTo() | compare() |
정렬 |
기본 정렬 기준을 구현하는데 사용 |
그 외 다른 여러 기준으로 정렬하고자 할때 사용 |
사용법 |
1. 정렬하고자 하는 객체에 Comparable 상속받아 2. comparaTo() 메소드를 오버라이딩 3. 반환값 : 하나씩 비교해서 작으면 -1 같으면 0 크면 +1 |
1. 객체 생성 후 Comparator 상속 2. public int compare(Musio o1, Music o2) { o1을 기준으로 해서 o1이 o2보다 큰지 작은지 비교
|
Collection.sort();
원본 자체를 정렬
정렬전 모습이 필요한 경우 별도의 복사를 해둬야 한다.
Collections.sort(정렬할 리스트, comparator를 상속받은 기준객체)
@@@set@@@
저장 순서가 유지되지 않고, 중복 객체도 저장하지 못하게 하는 자료 구조
null도 중복을 허용하지 않음
@@HashSet@@
Set에 객체를 저장할 때 hash함수를 사용하여 처리 속도가 빠름
# hash함수 : Objet.hashCode();
객체주소(중복 최소화된 32비트의 정수(int형))
1. hashCode() 2. equals()
@HashSet에서 hashCode()확인검사
-> 같은 필득값을 가지고 있으면 같은 정수가 나올수 있도록 오버라이딩
final int PRIME = 31;
int result = 1;
result = PRIME * result + age;
result = PRIME * result + score;
result = PRIME * result + (name == null ? 0 : name.hashCode());
@Iterator@
컬렉션에 저장된 요소를 접근하는데 사용되는 인터페이스
Iterable -> Collection -> List, Set
1. set-> List에 담아 준 후 접근하기
List<Student> list = new ArrayList<>(hs);
for(int i=0; i<list.size(); i++) {
System.out.println(list.get(i));
}
2. 반복자 Iterator 사용하여 접근
Iterator<Student> it = hs.iterator();
while(it.hasNext()) { //다음이 존재하는가?
//Iterator에서 현재 가리키고 있는
//위치 다음 부분에 값이 있을경우 true
//없으면 false
System.out.println(it.next()); //다음칸이동후 가져옴
3. 향상된 for문 (for-each문)
for(참조형 : 배열 또는 Collection){}
참조형이 배열 또는 Collection의 요소를 하나씩 순차적으로 참조하는 형태의 반복문
for(Student s : hs) {
System.out.println(s);
}
@@LinkedHashSet@@
순서가 유지되는 HashSet
@@TreeSet@@
이진 트리를 기반으로 한 Set컬렉션으로 왼쪽과 오른쪽
자식노드를 참조하기 위한 두개의 변수로 구성
1. 검색속도 up
2. 저장할때 부터 자동정렬이 된다
'study > java' 카테고리의 다른 글
14_java_용어정리 (0) | 2019.11.13 |
---|---|
13_java_Map (0) | 2019.11.12 |
11_java_MVC Model2,Collection (0) | 2019.11.08 |
10_java_String,wrapper (0) | 2019.11.07 |
9_java_프로그래밍 언어활용 1~8 정리 (0) | 2019.11.06 |