Categories: Java 언어Korean

Java 총 정리 [82. Set]

Set

이전 걸음에서 Java의 자료구조의 list를 공부를 했습니다. 자료구조에서 가장 많이 쓰는 구조이기 때문에 꼭 알고 있으면 좋습니다. 이번 걸음에서는 list 다음으로 다른 자료구조를 공부를 하도록 하겠습니다. 이번 걸음으로 다른 자료구조의 형태를 배우는 시간이 될 수 있습니다.

Set이라는 자료구조에 대해 이번 걸음에서 공부를 하도록 해보겠습니다. Set은 List와 다른 부분이 있기 때문에 차이점을 이해를 하고 사용을 하는 방법과 특징에 대해서 공부를 진행을 할 예정입니다. 끝까지 글을 읽으신다면 Set에 대해서 완벽하게 이해를 하실 수 있습니다.

Set이란? 무엇인지 그리고 Set의 특징과 Set과 관련이 있는 class들 그리고 Set의 Method를 공부해서 Set을 활용하고 사용을 할 수 있는 방법을 이번 걸음에서 같이 공부를 하겠습니다. List와 다른 부분을 숙지해서 필요성에 따라 사용을 할 수 있습니다.

Set이란?

Set의 특징은 순서가 없이 데이터를 구조화 해서 관리를 하게 됩니다. 그래서 데이터의 index는 존재 하지 않고 데이터는 그 다음의 데이터 이동을 하는 것만 알고 있습니다. 그렇게 index 없이 데이터를 관리를 하다 보니 데이터가 중복이 될 수 없습니다. 데이터 자체를 가지고 고유성을 분리를 해서 관리를 하기 때문입니다.  Set에 관련 인터페이스는 Collection, Set이 있습니다. 

관련 class : HashSet, TreeSet, LinkedHashSet

※ Hash, Tree, Linked는 데이터를 구조하는 알고리즘입니다. 추가적으로 공부를 하시면 이해를 하시는데 더욱 도움이 되실 수 있습니다.

Set의 동작

Set은 자체적Method

add : 객체 추가

addAll : 컬렉션 추가

clear : 모든 객체 삭제

size : 객체의 개수

위와 같이 사용을 하여 추가와 모두 지우기가 가능합니다. 하지만 데이터만  탐색을 하거나 선택된 데이터를 삭제를 하기 위해서 Set만으로 할 수 없고 Iterator의 도움을 받아서 진행을 해야 합니다. 

메소드 이름

설명

Boolean hasNext()

다음 요소가 있으면 true, 없으면 false 반환

Object next()

다음 요소를 반환

Void remove()

다음 요소를 삭제

                                                                                   <Iterator Method>

위의 Method를 사용을 해야지 데이터 탐색과 개별 삭제를 할 수 있습니다.

Set 예제

    
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에 추가를 해서 사용을 하면 됩니다.

Dolphin

Recent Posts

Java 총정리[97. Java GUI]

Java GUI Java GUI에 대해서 이번 걸음에서 배움으로써 GUI에 전반적인 지식과 Java GUI를 구현하는 방법…

7개월 ago

Java 총정리[96. Java TCP 통신 프로그램 구현]

Java TCP 통신 프로그램 구현 Java TCP 통신 프로그램 구현을 위해서 이전 걸음에서 쓰레드에 대한…

7개월 ago

Java 총정리[95.쓰레드 통신]

쓰레드 통신 이전 걸음에서 쓰레드의 임계영역에 대해서 같이 공부를 했습니다. 동기화에 대한 개념을 계속적으로 하고…

7개월 ago

Java 총 정리[94. 쓰레드 임계영역]

쓰레드 임계영역 이전 걸음에서 쓰레드의 동기화에 대해서 같이 공부를 했습니다. 동기화에 대한 전반적인 내용을 공부하고…

8개월 ago

Java 총 정리[93. 쓰레드 동기화]

쓰레드 동기화 이전 걸음에서 계속 쓰레드에 대해서 공부를 하고 있습니다. 쓰레드는 상당히 중요한 개념이기 때문에…

8개월 ago

Java 총 정리[92. 쓰레드 join()]

쓰레드 join() 이전 걸음에서 쓰레드의 전반적인 실행 흐름에 대해서 공부를 했습니다. 이제 배운 실행 흐름…

8개월 ago

This website uses cookies.