🔸HashSet 이란?
- 집합 데이터 자료구조로 특정 원소를 검색하는 용도가 아닌 대상 원소가 집합에 존재하는지 여부를 확인하는 용도로 많이 사용된다. ( Fast Lookup )
- 데이터를 비순차적으로 저장한다. ( 순서를 보장하지 않음 )
- 데이터를 중복으로 삽입할 수 없다.
HashSet<String> menu_Set = new HashSet<String>();
menu_Set.add("짜장면");
menu_Set.add("짬뽕");
menu_Set.add("파스타");
menu_Set.add("짜장면");
System.out.println(menu_Set.size());
if(menu_Set.contains("파스타")) {
menu_Set.remove("파스타");
}
System.out.println(menu_Set);
Iterator iter = menu_Set.iterator();
while(iter.hasNext(){
System.out.println(iter.next());
}
▼ 이런 특징을 활용해 ArrayList에 중복값이 있는지 간단하게 체크할 수 있다.
List<String> menu_List = new ArrayList<String>();
menu_List.add("탕수육");
menu_List.add("짜장면");
menu_List.add("볶음밥");
menu_List.add("짜장면");
HashSet<String> mn_Set = new HashSet<String>(menu_List);
if(menu_List.size() != mn_Set.size())
System.out.println("중복데이터 존재!!");
- 이처럼 Set을 활용하면 중복되는 데이터가 있을 경우 특정 기능을 수행해야 할 때 활용할 수 있다.
▼ 하지만 중복되는 데이터가 무엇인지 찾으려면 indexOf 와 lastIndexOf 를 같이 활용해야 한다.
List<String> menu_List = new ArrayList<String>();
menu_List.add("유산슬");
menu_List.add("깐풍기");
menu_List.add("깐쇼새우");
menu_List.add("깐풍기");
menu_List.add("깐쇼새우");
HashSet<String> dupl_Set = new HashSet<String>;
for(String menu : menu_List) {
if(menu_List.indexOf(menu) != menu_List.lastIndexOf(menu)){
dupl_Set.add(menu);
}
System.out.println(dupl_Set);
}