๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์–ธ์–ด/java

[java] Set-HashSet, LinkedHashSet, TreeSet

by ๊ฐœ๋ฐœLOG 2025. 5. 2.
๋ฐ˜์‘ํ˜•

Set์€ ๋ฐฐ์—ด์„ ์ค‘๋ณต์ œ๊ฑฐํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

Set์— ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด addํ•˜๋ฉด ๋œ๋‹ค.

๊ตฌ๋ถ„  HashSet  LinkedHashSet TreeSet
์ค‘๋ณต ์ œ๊ฑฐ โœ… ๊ฐ€๋Šฅ โœ… ๊ฐ€๋Šฅ โœ… ๊ฐ€๋Šฅ
์ •๋ ฌ ์ˆœ์„œ ์œ ์ง€ โŒ ์ˆœ์„œ ์—†์Œ (๋ฌด์ž‘์œ„) โœ… ์ž…๋ ฅํ•œ ์ˆœ์„œ ์œ ์ง€ โœ… ์˜ค๋ฆ„์ฐจ์ˆœ
์†๋„ O(1)๋กœ ๋ณดํ†ต ๋” ๋น ๋ฆ„ O(1)๋กœ ์•ฝ๊ฐ„ ๋А๋ฆผ (์ˆœ์„œ ์œ ์ง€ ์˜ค๋ฒ„ํ—ค๋“œ) O(log N) (์ด์ง„ ํŠธ๋ฆฌ ๊ธฐ๋ฐ˜)
์‚ฌ์šฉ ๋ชฉ์  ์ˆœ์„œ ์ƒ๊ด€์—†๋Š” ์ค‘๋ณต ์ œ๊ฑฐ ์ค‘๋ณต ์ œ๊ฑฐ + ์ž…๋ ฅ ์ˆœ์„œ ์œ ์ง€ ํ•„์š” ์‹œ ์ •๋ ฌ๋œ ์ง‘ํ•ฉ์ด ํ•„์š”ํ•  ๋•Œ (์˜ˆ: ์ˆœ์œ„, ์ •๋ ฌ ์ถœ๋ ฅ)

 

์ค‘๋ณต์ œ๊ฑฐ (์ˆœ์„œํ•„์š”)์˜ˆ์‹œ:

import java.util.*;

String[] arr = {"apple", "banana", "apple", "orange", "banana"};
Set<String> set = new LinkedHashSet<>(Arrays.asList(arr));

for (String s : set) {
    System.out.println(s);
}

 

๊ต์ง‘ํ•ฉ ์š”์†Œ ์ฐพ๋Š” ๋ฌธ์ œ(์ˆœ์„œํ•„์š”์—†์Œ):

import java.util.*;

int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = {3, 4, 5, 6, 7};

Set<Integer> set = new HashSet<>();
for (int num : arr1) {
    set.add(num);
}

for (int num : arr2) {
    if (set.contains(num)) {
        System.out.print(num + " ");
    }
}

 

๊ต์ง‘ํ•ฉ ๋‚ด์žฅ ๋ฉ”์„œ๋“œ retainAll():

package ex;

import java.util.Arrays;
import java.util.HashSet;

public class ex01 {
//	static Scanner sc = new Scanner(System.in);

	public static void main(String[] args) throws Exception {
		HashSet<Integer> arr1 = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5));
		HashSet<Integer> arr2 = new HashSet<>(Arrays.asList(3, 4, 5, 6, 7));
		HashSet<Integer> result = new HashSet<>(arr1);
		result.retainAll(arr2);
		System.out.println(result);

	}

}

ํ•ฉ์ง‘ํ•ฉ์€ addAll(ํ•œ๊บผ๋ฒˆ์— ์ถ”๊ฐ€) ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. //add๋Š” ํ•˜๋‚˜์”ฉ์ถ”๊ฐ€ 

์ฐจ์ง‘ํ•ฉ์€ removeAll(ํ•œ๊บผ๋ฒˆ์— ์‚ญ์ œ) ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. //remove๋Š” ์š”์†Œ ์‚ญ์ œ

๋ฐ˜์‘ํ˜•

'์–ธ์–ด > java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[java] ์—ด๊ฑฐํ˜• ํƒ€์ž… enum  (0) 2025.09.06
[java] Map-HashMap, LinkedHashMap, TreeMap  (0) 2025.05.02
[java] for, for each๋ฌธ  (0) 2025.05.02
[java] switch/case ๋ฌธ  (0) 2025.05.02
[java] ์ดํด๋ฆฝ์Šค ๋‹จ์ถ•ํ‚ค ๋ชจ์Œ  (0) 2025.05.02