Set 컬렉션과 List컬렉션 비교
구분 | 저장순서 | 중복 |
Set(집합) | 유지하지 않음.(순서 없음) (iterator 사용해야함) |
불가(null도 하나의 null만 가능) |
List | 유지함.(순서 있음) | 가능 |
Set 컬렉션 주요 메소드
기능 | 메소드 | 기능 설명 |
객체 추가 | boolean add(E e) | 객체 저장 성공 하면 True, 중복 객체면 False*** |
객체 검색 | boolean contains(Object o) | 주어진 객체가 저장되어 있는지 여부 True,False |
boolean isEmpty() | 컬렉션이 비어있는지 True/False | |
Iterator<E> iterator() | 저장된 객체를 한번씩 가져오는 반복자 리턴*** | |
int size() | 전체 객체 수 리턴*** | |
객체 삭제 | int clear() | 저장된 모든 객체 삭제 |
boolean remove(Object o) | 주어진 객체 삭제*** |
iterator 인터페이스의 메소드
리턴타입 | 메소드 | 설명 |
boolean | hasNext() | 가져올 객체 있을 시 True, 없으면 False |
E | next() | 컬렉션에서 하나의 객체리턴. |
void | remove() | Set 컬렉션에서 객체 제거. |
Set 컬렉션은 iterator를 이용하여 객체를 가져와야 한다. (저장순서가 유지되지 않기 때문.)
그래서 set 객체를 선언하고 set.Iterator()를 가져와 iterator객체를 가져와 while 문을 이용하여 hasNext()메소드와 next()메소드를 이용하여 객체를 가져와야한다.
ex1)
Set<T> set = new HashSet<>();
Iterator<T> iterator = set.Iterator();
while(iterator.hasNext()){
T t = iterator.next();
}
또는
ex2)
Set<T> set = new HashSet<>();
for(T t : set){
...
}
이런식으로 루핑하면서 Set의 객체를 가져와야 한다.
Set 컬렉션에서 Iterator의 next() 메소드로 가져온 객체를 제거하고 싶다면 조건문과 equals() 메소드를 활용하여 제거해주면 된다.
ex)
while(iterator.hasNext()){
T t= iterator.next();
if(t.equals("이순신")){
iterator.remove("이순신");
}
}
- HashSet
HashSet은 Set인터페이스의 구현 클래스이다. 중복을 허용하지 않으며, 중복 판단은 hashCode()와 equals()의 리턴값에 따라 동등객체 판정하여 결정한다.
'프로그래밍 > JAVA 내용정리' 카테고리의 다른 글
[MordernJavaInAction] 6장 스트림으로 데이터 수집(Stream Collector) 1편. (0) | 2022.09.25 |
---|---|
[ModernJavaInAction] 5장 스트림의 활용 (1) | 2022.09.12 |
[Java] Atomic Integer에 대하여. (0) | 2022.08.28 |
[ModernJavaInAction] 4장 스트림(Stream) (0) | 2022.08.22 |
컬렉션 프레임 워크 (List, ArrayList, Vector, LinkedList) (0) | 2020.10.11 |