Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

나의 IT일지

Set 컬렉션 본문

프로그래밍 언어/Java

Set 컬렉션

세레프 2023. 5. 26. 23:07

 데이터는 자료구조를 통해 의미와 목적을 바탕으로 구분해서 저장한다. 이때, 자료구조데이터를 구분해서 저장하는 구조로, 데이터를 효율적으로 사용하기 위해서 사용한다. 그리고 자바에서는 자료구조를 사용해서 데이터를 효율적으로 추가, 삭제, 검색 할 수 있도록 컬렉션 인터페이스로 사용방법을 정의했으며, 데이터(요소)를 가지는 객체의 주소를 저장하는 컬렉션 클래스로  java.util 패키지에 구현했다. 

 

컬렉션 프레임 워크

상황에 따라서 자료가 어떻게 저장되어야 효율적으로 데이터를 사용할 수 있는지 달라진다. 그래서 상황에 따라 자료를 어떻게 저장하는지 정의할 필요가 있다. 이때, 자료들을 저장할 때, 효율

my-it-diary.tistory.com

 

Set 컬렉션

 Set 컬렉션컬렉션 프레임워크에 있는 Set 인터페이스를 통해 구현한 클래스로, 요소들을 집합적으로 모아놓은 자료구조이다. 

 

Set (Java Platform SE 8 )

A collection that contains no duplicate elements. More formally, sets contain no pair of elements e1 and e2 such that e1.equals(e2), and at most one null element. As implied by its name, this interface models the mathematical set abstraction. The Set inter

docs.oracle.com

 Set 컬렉션의 특징으로는 저장 순서를 유지하지 않는다는 것 중복해서 객체를 저장하는 것을 허용하지 않는다는 이다. 그래서 중복 요소를 추가하려는 경우에는 추가 되지 않고 false값으로 반환한다.

 

Set<E> 변수 = new  Set 컬랙션 클래스() ;

 위의 구조는 Set 컬랙션에 있는 자료구조를 객체로 생성하는 구조로, Set 컬렉션의 종류에는 HashSet, TreeSet이 있다.

 

 Set 컬렉션은 Set 인터페이스를 통해 구현되어 있기에, 공통적으로 사용할 수 있는 메서드가 있다. 

  • add(객체) : 해당 객체를 Set 자료구조에 저장
  • iterator() : 저장되어 있는 객체를 순회하는 iterator를 생성
  • remove(객체) : 해당 객체를 Set 자료구조에서 삭제
  • size() : Set 자료구조에 저장되어 있는 객체의 수 출력
iterator 인터페이스
 iterator컬렉션 객체에 접근해서 반복적으로 객체에 접근할 수 있도록 도움을 주기 위한 것으로, 인터페이스로 구성되어 있기에 해당 컬렉션 클래스의 iterator메서드를 통해 객체를 생성해야 한다. 
생성
Iterator<E> 변수 = 컬렉션 클래스 객체.iterator();
이때, <E>는 생략이 가능하며, 컬랙션 클래스에 저장되어 있는 객체에 저장되어 있는 요소의 타입에 맞게 타입을 변형해서 생성
메서드
hasNext() : 가져올 객체가 있으면 true, 없으면 false를 출력
next() : 컬렉션에서 하나의 객체를 호출
remove() : 해당 컬렉션 클래스에서 객체를 제거

 

HashSet

 HashSetSet인터페이스를 통해 구현된 컬렉션 클래스로, 객체의 중복을 허용하지 않고 삽입 순서없이 객체를 저장한다. 그래서 해당 자료구조에 저장되어 있는 객체를 출력할 때, 삽입순서와 상관 없이 출력이 된다.

 

HashSet (Java Platform SE 8 )

This class implements the Set interface, backed by a hash table (actually a HashMap instance). It makes no guarantees as to the iteration order of the set; in particular, it does not guarantee that the order will remain constant over time. This class permi

docs.oracle.com

 즉, HashSet 객체 값이 중복하지 않고 삽입되는 순서와 규칙에 상관없이 객체를 저장하는 자료구조이다. 

 

HashSet<E> 변수 = new HashSet<E>();

 

 이때, 제너릭 기법인 <E>는 생략이 가능하며, <E>를 생략할 경우에는 add()메서드를 통해 추가되는 객체의 타입에 맞춰서 해당 HashSet에 저장할 수 있는 타입이 변경된다.

package pack0526;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class Code1 {

	public static void main(String[] args) {
		HashSet hs1 =  new HashSet();
		hs1.add("demon");
		hs1.add("banna");
		hs1.add("tomato");
		hs1.add("apple");
		hs1.add("cargo");
		
		Set hs2 = new HashSet();
		hs2.add("Java");
		hs2.add("Python");
		hs2.add("C");
		hs2.add("C++");
		hs2.add("C#");
		
		System.out.println("----------HashSet1----------");
		System.out.println(hs1);
        
        System.out.println("----------HashSet2----------");
		Iterator it = hs2.iterator();
		while(it.hasNext()) {
			System.out.print(" "+it.next()); 
		}

 

TreeSet

 TreeSet Set인터페이스를 통해 구현된 컬렉션 클래스로, 객체의 중복이 없고 삽입 순서없이 객체를 저장하지만 객체를 출력할때, 객체를 규칙에 따라 정렬해서 출력하는 정렬 기능이 추가되어 있는 형태이다. 그래서 해당 자료구조에 저장되어 있는 객체를 출력할 때, 규칙에 따라 순서가 정해져서 출력이 된다.

 

TreeSet (Java Platform SE 8 )

 

docs.oracle.com

 즉, TreeSet 객체 값이 중복하지 않고 삽입되는 순서에 상관없이 요소가 저장되지만 객체간의 규칙을 정해서 객체를 저장하는 자료구조이다. 

 

TreeSet<E> 변수 = new TreeSet<E>();

 

 이때, 제너릭 기법인 <E>는 생략이 가능하며, <E>를 생략할 경우에는 add()메서드를 통해 추가되는 객체의 타입에 맞춰서 해당 TreeSet에 저장할 수 있는 타입이 변경된다.

package pack0526;

import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

public class Code1 {
		TreeSet ts1 = new TreeSet();
		ts1.add("demon");
		ts1.add("banna");
		ts1.add("tomato");
		ts1.add("apple");
		ts1.add("cargo");
		
		Set ts2 = new TreeSet();
		ts2.add("Java");
		ts2.add("Python");
		ts2.add("C");
		ts2.add("C++");
		ts2.add("C#");

		System.out.println("----------TreeSet 1----------");
		System.out.println(ts1);
		System.out.println("----------TreeSet 2----------");
		Iterator it2 = ts2.iterator();
		while(it2.hasNext()) {
			System.out.print(" "+it2.next());
		}
	}
}

'프로그래밍 언어 > Java' 카테고리의 다른 글

Queue, Stack  (0) 2023.06.17
List 컬렉션  (0) 2023.05.27
컬렉션 프레임 워크  (0) 2023.05.25
Format 클래스  (0) 2023.05.24
기타 API 클래스  (0) 2023.05.23
Comments