보라코딩

Day19_230120_컬렉션 프레임워크 (HashSet, TreeSet) 본문

코딩/Java

Day19_230120_컬렉션 프레임워크 (HashSet, TreeSet)

new 보라 2023. 1. 20. 18:42

 

HashSet에서 toString()과 hashCode() 오버라이드

 

person 클래스 만들었고

주민번호, 이름, 나이 넣을 수 있는 생성자 만든다

 

그런데  toString()과 hashCode() 오버라이드를 하지 않으면

모두 같은 객체를 만들어도 다른 객체로 인지한다.

 

따라서 조건에 맞게 오버라이드 해줘야하는데

주민번호만 같으면 같은 사람으로 받아들이도록 했다.

 

 

 

 

HashSet 오버라이드 후 실습

 

 

Set 로또 만들기 실습

 

for문을 이용하려면 이번의 경우는 i가 굳이 필요하지 않고

lotto.size를 조건으로 써야한다.

그래서 이런 경우

for ( ; lotto.size() < 6; ) { }  이렇게 사용 가능하다!!!!!

 

 

 

while을 사용한 방법이 더 좋다.

확실하게 6개의 중복없는 값을 넣기 위해

HashSet으로는 정렬이 불가능하기에

이를 ArrayList로 넣어서 sort 이용했다

 

 

 

TreeSet

: TreeSet을 이용하면
바로 정렬된다!

 

Iterator<E>  descendingIterator() 메서드도 사용해보고

NavigableSet<E> descendingSet() 메서드도 사용해서

정렬을 내림차순으로 만들고 뒤집어 봤다.

 

 

 

 

 

TreeSet 사용하면 중복도 안되며 정렬까지 심플  - !

 

 

 

 

HashSet, TreeSet 실습

이전에 만들었던 StudentVO 클래스를 이용해서
우선 HashSet으로 만들어보았고
이후에 TreeSet으로 정렬 연습을 했다.

 

 

강사님께서 조건을 주신건

toString을 사용하지 못하게 했다. (원래 생략 가능해서 사용하기 편한데)

하지만 getPringString이란 메서드가 있었다.

 

 

TreeSet으로 정렬을 사용할때 바로는 불가능했다.

기존에 int나 String은 가능한데

새로 만든 클래스가 정렬하기 위해서는 

Comparable을 구현해야 했다!!!!

 

구현 후 compareTo 오버라이딩!!!

이름, 총점 별로 오름차순, 내림차순 하는 방법을 배웠다.

 

 

 

 

 

HashSet을 사용할때는

개선된 for문을 사용해서

각각 데이터를 변경할  수 있었다.

 

 

 

TreeSet으로 변경한 후에

정렬할때도 개선된 for문 사용

 

 


 

 

 

낼부터 설연휴다 ㅎ.ㅎ

신난다! 

공부......해야지...............ㅎㅎㅎㅎㅎㅎ