자바의 collection 관련 공부
레시피 메모장을 만들면서 생긴 의문점
-> 다른 자료구조 List, Map은 잘 작동하는데 Set이 값을 넣은 순서대로 출력하지 않고 있다는 것을 확인할 수 있었다.
이렇게 넣어준 순서대로가 아니게 값이 출력되는 것을 확인할 수 있었다.
Set은 순서가 보장되지않는 자료구조라 입력한 순서대로 저장되지 않을 수 있다. 만약 입력한 순서대로 저장되어야 한다면 HashSet 대신 LinkedHashSet을 사용! → LinkedHashSet은 입력한 순서대로 요소가 저장되는 Set의 종류
아래와 같이 코드를 수정하여 LinkedHashSet을 사용하였다.
위 코드에서 Set<String> strSet = new LinkedHashSet<>(); 부분을 사용하여 LinkedHashSet을 생성.
LinkedHashSet을 사용하면 입력한 순서대로 요소가 저장되어 출력되었다.
값을 집어넣은 순서대로 출력이 되는 것을 확인. 잘 작동이 되었다.
✅ 'Set' 자료구조
Set은 자바 컬렉션 자료구조로 중복된 요소를 허용하지 않는 집합(Set) 자료구조를 구현하는데 사용된다.
- 'Set' 인터페이스 :
· 'Set'은 중복된 요소를 허용하지 않는 순서가 없는 컬렉션
· 주요 구현 클래스 : 'HashSet' / 'LinkedHashSet' / 'TreeSet' 등
ㅁ - 'HashSet' 클래스 :
· 'HashSet'은 해시테이블을 사용하여 요소를 저장하는 'Set'의 구현 클래스
· 순서를 보장하지 않아 요소가 저장된 순서대로 반복되지 않을 수 있음
· 중복된 요소 허용 X
· 빠른 추가, 제거, 포함 여부 확인이 가능함
ㅁ - 'LinkedHashSet' 클래스 :
· 'LinkedHashSet'은 해시테이블과 연결리스트를 사용하여 요소를 저장하는 'Set'의 구현클래스
· 입력한 순서대로 요소가 저장되어 순서를 보장
· 'HashSet'과 유사하게 요소 추가, 제거, 포함 여부 확인은 빠름
ㅁ - 'TreeSet' 클래스 :
· 'TreeSet'은 이진 검색 트리를 사용하여 요소를 저장하는 'Set'의 구현클래스
· 요소들이 자동으로 정렬저장되며, 순서를 보장함
· 중복된 요소를 허용하지 않음
· 정렬된 순서를 유지하면서 데이터를 저장하고 싶을 때 유용함
ㅁ
따라서, 요소의 순서가 중요한 경우에는 LinkedHashSet을 사용. 만약 정렬된 순서를 유지하거나 이진 검색 트리를 활용해야 한다면 TreeSet을 사용. |
https://github.com/Jang-JIye/FirstJava/blob/master/src/week02/Recipes02.java
'항해' 카테고리의 다른 글
모듈화가 필요한 이유 (0) | 2023.08.21 |
---|---|
WIL : JVM이란 무엇인가? (0) | 2023.08.21 |
JAVA_형변환(casting) 정리! (0) | 2023.08.18 |
트러블슈팅_reached end of file while parsing (0) | 2023.08.16 |
무한 루프 트러블 슈팅 (0) | 2023.08.14 |