| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- SQL
- 알고리즘
- Next.js
- jsp
- 디자인 패턴
- 스프링부트
- MySQL
- 오라클
- jpa
- 미니정리
- 자바스크립트
- 프런트엔드
- oracle
- web
- 스프링
- 코드 테스트
- 프로그래머스
- 쿼리
- 프론트엔드
- 서버
- spring
- node.js
- 자바
- 정리
- 백엔드
- JavaScript
- BACK-END
- java
- 데이터베이스
- 코드테스트
- Today
- Total
참치코더의 꿈 메모장
2021/08/24 Java- 컬렉션 프레임워크 Set 본문
Set 컬렉션
List 컬렉션은 객체의 저장 순서를 유지하지만 Set 컬렉션은 저장 순서가 유지되지 않는다.
또한 객체를 중복해서 저장할 수 없고, 하나의 null만 저장할 수 있다.
Set 컬렉션에는 HashSet, LinkedHashSet, TreeSet등이 있다.
Set 컬렉션에서 공통적으로 사용 가능한 Set 인터페이스의 메소드
| 객체 추가 | boolean add(E e) | 주어진 객체를 저장한다. 객체가 성공적으로 저장되면 true를 리턴하고, 중복 객체면 false를 리턴한다. |
| 객체 검색 | boolean contains(Object o) | 주어진 객체가 저장되어 있는지 조사한다. |
| boolean isEmpty( ) | 컬렉션이 비어 있는지 조사한다. | |
| Iterator<E> iterator( ) | 저장된 객체를 한 번씩 가져오는 반복자를 리턴한다. |
|
| int size( ) | 저장되어 있는 전체 객체 수를 리턴한다. |
|
| 객체 삭제 | void clear( ) | 저장된 모든 객체를 삭제한다. |
| boolean remove(Object o) | 주어진 객체를 삭제한다. |
Set 컬렉션은 인덱스로 객체를 검색해서 가져오는 메소드가 없다.
대신 전체 객체를 대상으로 한 번씩 반복해서 가져오는 반복자(Iterator)를 제공한다.
Set<String> set = ...;
Iterator<String> iterator = set.iterator( );
Iterator 인터페이스에 선언된 메소드들
| boolean | hasNext( ) | 가져올 객체가 있으면 true를 리턴하고 없으면 false를 리턴한다. |
| E | next( ) | 컬렉션에서 하나의 객체를 가져온다. |
| void | remove( ) | Set 컬렉션에서 객체를 제거한다. |
Set<String> set = ...;
Iterator<String> iterator = set.iterator( );
while(iterator.hasNext( ) ) {
String str = iterator.next( );
}
Iterator를 사용하지 않더라도 향상된 for문을 이용해서 전체 객체를 대상으로 반복할 수 잇따.
Set<String> set = ...;
for(String str : set){
}
HashSet
HashSet은 Set 인터페이스의 구현 클래스이다.
Set<E> set = new HashSet<E>( );
* Set<String> set = new HashSet<>( ); //hashSet의 E 파라미터를 생략하면 왼쪽 set에 지정된 타입을 따라 감
HashSet이 판단하는 동일한 객체란 꼭 같은 인스턴스를 뜻하지는 않는다.
HashSet은 객체를 저장하기 전에 먼저 hashCode( )메소드를 호출해서 해시코드를 얻어내고,
이미 저장되어 있는 객체들의 해시코드와 비교한다.
만약 동일한 해시코드가 있다면 equals( ) 메소드로 두 객체를 비교해서 true가 나오면 동일한 객체로 판단하고
중복저장 하지 않는다.
'JAVA' 카테고리의 다른 글
| 2021/08/26 Java - Generics(지네릭스) (0) | 2021.08.26 |
|---|---|
| 2021-08-25 Java - 호텔 방 예약 프로그램 CRUD 과제 (Map 사용) (0) | 2021.08.25 |
| 2021/08/23 Java - 컬렉션 프레임워크 List 컬렉션 (0) | 2021.08.23 |
| 2021/08/14 Java - 상속 (0) | 2021.08.15 |
| 2020/08/11 Java - 패키지와 접근 제한자 (0) | 2021.08.11 |