이전 걸음에서 Java의 자료구조의 list를 공부를 했습니다. 자료구조에서 가장 많이 쓰는 구조이기 때문에 꼭 알고 있으면 좋습니다. 이번 걸음에서는 list 다음으로 다른 자료구조를 공부를 하도록 하겠습니다. 이번 걸음으로 다른 자료구조의 형태를 배우는 시간이 될 수 있습니다.
Set이라는 자료구조에 대해 이번 걸음에서 공부를 하도록 해보겠습니다. Set은 List와 다른 부분이 있기 때문에 차이점을 이해를 하고 사용을 하는 방법과 특징에 대해서 공부를 진행을 할 예정입니다. 끝까지 글을 읽으신다면 Set에 대해서 완벽하게 이해를 하실 수 있습니다.
Set이란? 무엇인지 그리고 Set의 특징과 Set과 관련이 있는 class들 그리고 Set의 Method를 공부해서 Set을 활용하고 사용을 할 수 있는 방법을 이번 걸음에서 같이 공부를 하겠습니다. List와 다른 부분을 숙지해서 필요성에 따라 사용을 할 수 있습니다.
Set의 특징은 순서가 없이 데이터를 구조화 해서 관리를 하게 됩니다. 그래서 데이터의 index는 존재 하지 않고 데이터는 그 다음의 데이터 이동을 하는 것만 알고 있습니다. 그렇게 index 없이 데이터를 관리를 하다 보니 데이터가 중복이 될 수 없습니다. 데이터 자체를 가지고 고유성을 분리를 해서 관리를 하기 때문입니다. Set에 관련 인터페이스는 Collection, Set이 있습니다.
관련 class : HashSet, TreeSet, LinkedHashSet
※ Hash, Tree, Linked는 데이터를 구조하는 알고리즘입니다. 추가적으로 공부를 하시면 이해를 하시는데 더욱 도움이 되실 수 있습니다.
Set은 자체적Method
add : 객체 추가
addAll : 컬렉션 추가
clear : 모든 객체 삭제
size : 객체의 개수
위와 같이 사용을 하여 추가와 모두 지우기가 가능합니다. 하지만 데이터만 탐색을 하거나 선택된 데이터를 삭제를 하기 위해서 Set만으로 할 수 없고 Iterator의 도움을 받아서 진행을 해야 합니다.
메소드 이름 | 설명 |
Boolean hasNext() | 다음 요소가 있으면 true, 없으면 false 반환 |
Object next() | 다음 요소를 반환 |
Void remove() | 다음 요소를 삭제 |
<Iterator Method>
위의 Method를 사용을 해야지 데이터 탐색과 개별 삭제를 할 수 있습니다.
public class SetTest1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
HashSet<String> a = new HashSet<>();
HashSett<Integer> b = new HashSet<>();
String[] color =
{"빨간색","주황색","노란색","초록색","파란색","남색","보라색"};
for(int i = 0;i<color.length;i++) {
a.add(color[i]);
b.add(i);
}
a.add("빨간색");
boolean checkChange = a.add("무지개색");
System.out.println(checkChange);
System.out.println("b의 가장 큰값은 ?" + Collections.max(b));
System.out.println("b의 가장 최소값은 ?" + Collections.min(b));
System.out.println("=============================");
//향상된 for문
for(String s : a) {
System.out.println(s);
}
System.out.println("=============================");
//일반
Iterator it = a.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
}
}
결과
true
b의 가장 큰값은 ?6
b의 가장 최소값은 ?0
=============================
노란색
주황색
남색
파란색
무지개색
초록색
빨간색
보라색
=============================
노란색
주황색
남색
파란색
무지개색
초록색
빨간색
보라색
위의 소스를 보면 iterator를 활용해서 반복문을 활용하여 데이터를 검색을 하고 있습니다. for문은 향상된 for문으로 데이터 탐색을 하고 while문에서 hasNext로 그 다음 데이터 여부를 확인하고 next를 통해서 데이터를 추출해서 사용을 하고 있습니다.
※ 사용 방법을 꼭 확인해서 사용을 하세요.
객체를 데이터 관리를 하는 예제 소스입니다. 객체를 생성 후에 Set에 추가를 해서 사용을 하면 됩니다.