12_java_Comparable,Comparator,Set

study/java · 2019. 11. 9. 12:23

@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