loading

프로그래밍/JAVA

[JAVA] LinkedHashSet의 개념과 사용법

침착곰 2021. 5. 25. 00:09
반응형

안녕하세요

이번 포스팅에서는 LinkedHashSet의 개념과 사용법에 대해서 알아보겠습니다!

 

목차

LinkedHashSet이란?
LinkedHashSet 선언하기
LinkedHashSet 값 추가하기
LinkedHashSet 값 삭제하기
LinkedHashSet 크기 구하기
LinkedHashSet 값 출력하기

LinkedHashSet이란?

HashSet과 동일한 구조를 가지지만 HashSet은 순서를 관리하지 않아 값을 출력할 때마다 다른 순서대로 출력이 됩니다

하지만 LinkedHashSet은 삽입된 순서대로 반복합니다

HashSet과 동일한 특징들이 있는데 마찬가지로 중복 값을 허용하지 않습니다

 


LinkedHashSet 선언하기

import java.util.Arrays;
import java.util.LinkedHashSet;

public class LinkedHashSetDemo {
	public static void main(String[] args)  {
		LinkedHashSet hs = new LinkedHashSet(); // 타입 설정x Object 입력
		LinkedHashSet<LinkedHashSetDemo> demo = new LinkedHashSet<LinkedHashSetDemo>(); // 클래스로 타입 설정
		LinkedHashSet<Integer> i = new LinkedHashSet<Integer>(); // Integer 타입 선언
		LinkedHashSet<Integer> i2 = new LinkedHashSet(); // 뒷부분 타입 선언 생략 가능
		LinkedHashSet<Integer> i3 = new LinkedHashSet<Integer>(10); // 크기 10으로 선언
		LinkedHashSet<Integer> i4 = new LinkedHashSet<Integer>(Arrays.asList(1, 2, 3, 4)); // 선언과 동시에 초기 값 설정
		
		LinkedHashSet<String> str = new LinkedHashSet<String>(); // String 타입 선언
		LinkedHashSet<Character> ch = new LinkedHashSet<Character>(); // Char 타입 선언		
	}
}

LinkedHashSet의 선언하는 방법입니다

LinkedHashSet 변수명 = new LinkedHashSet(); 으로 기본적으로 선언이 가능합니다

LinkedHashSet<타입> 변수명 = new LinkedHashSet<타입>(); 으로 LinkedHashSet의 타입을 설정 가능합니다

타입은 클래스, Integer, String, Character 등 다양한 방식으로 선언이 가능합니다

LinkedHashSet<타입>(크기); 를 하면 크기를 설정가능합니다

LinkedHashSet<타입>(Arrays.asList(값)); 초기값을 설정하면서 선언이 가능합니다

이렇게 다양한 방법으로 변수를 선언할 수 있습니다

 


LinkedHashSet 값 추가하기

import java.util.LinkedHashSet;

public class LinkedHashSetDemo {
	public static void main(String[] args)  {
		LinkedHashSet<String> str = new LinkedHashSet<String>(); // LinkedHashSet 선언
		
		// 값 추가
		str.add("Hello1");
		str.add("World2");
		str.add("Hello3");
		str.add("World4");
		str.add("World2");
				
		System.out.print(str); // 결과 출력
	}
}

LinkedHashSet의 값을 추가하는 방법입니다

add(Object) 메서드를 사용하여 값을 추가합니다

예제를 보면 "World2"를 추가하지만 중복값이라 결과를 조회할 때는 제외하고 출력된 것을 볼 수 있습니다

 

결과

 


LinkedHashSet 값 삭제하기

import java.util.LinkedHashSet;

public class LinkedHashSetDemo {
	public static void main(String[] args)  {
		LinkedHashSet<String> str = new LinkedHashSet<String>(); // LinkedHashSet 선언
		
		// 값 추가
		str.add("Hello1");
		str.add("World2");
		str.add("Hello3");
		str.add("World4");
		
		System.out.println(str); // 결과 출력		
		
		str.remove("World2"); // World2 값 삭제
		System.out.println(str); // 결과 출력	
		
		str.clear(); // 모든 값 삭제
		System.out.println(str); // 결과 출력	
	}
}

LinkedHashSet에서 값을 삭제하는 방법입니다

LinkedHashSet에서는 Linked로 서로 연결하여 값을 관리하기때문에 순서만 관리할 뿐 앞/뒤 데이터만 삭제가 불가능합니다

remove(Obejct) 메서드를 사용하여 원하는 값을 제거가 가능합니다

clear() 메서드를 사용하면 모든 값을 삭제합니다

 

결과

 


 

LinkedHashSet 크기 구하기

import java.util.LinkedHashSet;

public class LinkedHashSetDemo {
	public static void main(String[] args)  {
		LinkedHashSet<String> str = new LinkedHashSet<String>(); // LinkedHashSet 선언
		
		// 값 추가
		str.add("Hello1");
		str.add("World2");
		str.add("Hello3");
		str.add("World4");
		
		System.out.println(str); // 결과 출력	
		System.out.println("LinkedHashSet의 크기는? " + str.size()); // 결과 출력	
	}
}

LinkedHashSet의 크기를 구하는 방법은 size() 메서드를 사용하면 됩니다

LinkedHashSet 안에 있는 값의 갯수를 출력해줍니다

 

결과

 


LinkedHashSet 값 출력하기

import java.util.Iterator;
import java.util.LinkedHashSet;

public class LinkedHashSetDemo {
	public static void main(String[] args)  {
		LinkedHashSet<String> str = new LinkedHashSet<String>(); // LinkedHashSet 선언
		
		// 값 추가
		str.add("Hello1");
		str.add("World2");
		str.add("Hello3");
		str.add("World4");
		
		/* Iterator를 사용 HashSet 배열 출력 */
		Iterator iter = str.iterator();
		while(iter.hasNext())
			System.out.print(iter.next() + " ");
	}
}

LinkedHashSet의 값을 출력하는 방법입니다

하나의 값만 출력하는 메서드는 따로 제공하지 않아 Iterator를 사용하여 값을 출력해줘야합니다

 

결과

 

여기까지 LinkedHashSet의 개념과 사용법에 대해서 알아봤습니다

추가로 LinkedHashSet의 메서드 및 개념에 대해서 알아보고 싶은 분들은 아래의 사이트를 참고바랍니다!

https://www.geeksforgeeks.org/linkedhashset-in-java-with-examples/

 

LinkedHashSet in Java with Examples - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

 

반응형
그리드형