List와 Set의 차이점
HashSet 생성
HashSet hs1 = new HashSet<>();
HashSet 데이터 추가
- add() 메서드 이용
- set에 중복되는 데이터를 추가하면 false를 반환하고 데이터는 추가되지 않는다.
hs1.add("DD");
hs1.add("AA");
hs1.add(2);
hs1.add("CC");
hs1.add("BB");
hs1.add(1);
hs1.add(3);
HashSet 데이터 수정
- Set의 데이터를 수정하려면 수정하는 명령이 따로 없기 때문에 해당 자료를 삭제한 후에 추가해주는 방식으로 처리한다.
- 삭제하는 메서드 : remove(삭제할데이터)
반환값: 삭제성공(true), 삭제실패(false)
- clear() : 전체 데이터 모두 삭제
예제) "FF" 데이터를 "EE"로 변경하기.
hs1.remove("FF");
System.out.println("삭제한 후 set "+ hs1);
hs1.add("EE");
System.out.println(hs1);
hs1.clear();
System.out.println("전체 삭제 후 set "+ hs1);
HashSet 데이터 불러오기 - Iterator
- Set의 데이터는 순서(index)가 없기 때문에 List처럼 index로 데이터를 하나씩 불러올 수 없다.
그래서 데이터를 하나씩 얻기 위해서는 Iterator형 객체로 변환해야한다.- Set형의 데이터들을 Iterator형 객체로 변환하는 메서드 : iterator()
Set 데이터를 Iterator로 변환하기.
Iterator it = hs1.iterator();
hasNext()
- Iterator의 포인터가 가리키는 곳 다음 번째에 데이터가 있는지 검사한다.
(데이터가 있으면 true, 없으면 false 반환)next()
- Iterator의 포인터가 가리키는 곳 다음번째 위치로 이동한 후 그 곳의 데이터를 읽어와 반환한다.
while(it.hasNext()){
System.out.println(it.next());
}
// 향상된 for문을 사용하면 Iterator를 사용한 효과를 낼 수 있다.
for(Object data : hs1){
System.out.println(data);
}
Set유형의 데이터를 List형으로 변환하기
ArrayList<Integer> testList = new ArrayList<>(testSet);
System.out.println("List 데이터 출력");
for(int i=0; i<testList.size(); i ++){
System.out.println(testList.get(i));
}