์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ์ด๋ ธํ ์ด์
- url
- udp
- swagger
- Kotlin
- ํ๋ IT&E
- OpenAPI
- 2024-08-20
- OOP
- menutab
- Factory Method Pattern
- URN
- ๊ธฐ์ด100์
- 2024-08-21
- IOC
- Android Studio
- ์ฝ๋์
- reflection
- AndroidStudio
- fontstyle
- uri
- tcp
- Python
- ์ฑ์ฉํ์ ํ
- FACTORY
- http method
- datepicker
- Dialog
- ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ
- di
dingdong coding
[JAVA ] Set Interface ๋ณธ๋ฌธ
SET INTERFACE
• ์ ์ฅ ์์๊ฐ ์๋ ๋ฐ์ดํฐ์ ์งํฉ์ผ๋ก, ๋ฐ์ดํฐ์ ์ค๋ณต์ ํ์ฉํ์ง ์์ต๋๋ค.
ex) HashSet, LinkedHashSet( Hash Set์ ํ์ ํด๋์ค ), TreeSet
1. HashSet
• Hash๊ธฐ๋ฅ๊ณผ Set ์ปฌ๋ ์ ์ด ํฉ์ณ์ง ๊ฒ์ ๋๋ค.
• Hash Algorithm ์ ์ํด ๋ฐ์ดํฐ์ ์์น๋ฅผ ํน์ ์์ผ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ๊ฒ์ํ ์ ์๊ฒ ๋ง๋ ๊ฒ์ ๋๋ค.
• ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ Set ์ปฌ๋ ์ ์ ํด๋์ค๋ก ์ ๋ ฅ์์์ ์๊ด์์ด ์ ์ฅ๋์ด ์ ๋ ฌํด์ฃผ์ง ์๊ณ ์ค๋ณต๋ ๊ฐ์ ์ ์ฅํ์ง ์์ต๋๋ค.
• ๋ง์ฝ ์์์ ์ ์ฅ์์๋ฅผ ์ ์งํด์ผ ํ๋ค๋ฉด LinkedHashSet ํด๋์ค๋ฅผ ์ฌ์ฉํด์ผํฉ๋๋ค.
• Null ์์๋ ํ์ฉํฉ๋๋ค.
Hash Algorithm
: ํด์ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํด์ ํ ์ด๋ธ์ ์ ์ฅํ๊ณ ๋ค์ ๊ทธ๊ฒ์ ๊ฒ์ํ๋ ์๊ณ ๋ฆฌ์ฆ
: JAVA์์ ํด์์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ ์๋ฃ๊ตฌ์กฐ๋ ์๋์ ๊ฐ์ด Array์ LinkedList๋ก ๊ตฌํ๋ฉ๋๋ค.
: ์ ์ฅํ ๋ฐ์ดํฐ์ ํค ๊ฐ์ ํด์ํจ์์ ๋ฃ์ด ๋ฐํ๋๋ ๊ฐ์ผ๋ก ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ๊ตฌํ ํ ํด๋น ์ธ๋ฑ์ค์ ์ ์ฅ๋ ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
HashSet ์ค๋ณต์์ ํ์ ๊ณผ์
1. hashCode() ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ๋ฐํ๋ ํด์๊ฐ์ผ๋ก ๊ฒ์ํ ๋ฒ์๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
2. ํด๋น ๋ฒ์ ๋ด์ ์์๋ค์ equals() ๋ฉ์๋๋ก ๋น๊ตํฉ๋๋ค. ๋ง์ผ True๊ฐ ๋์ค๋ฉด ๋์ผํ ๊ฐ์ฒด๋ก ํ๋จํ๊ณ ์ค๋ณต์ ์ฅ์ ํ์ง ์์ต๋๋ค.
String ๊ฐ์ฒด๋ฅผ HashSet์ ์ ์ฅํ ๊ฒฝ์ฐ ๊ฐ์ ๋ฌธ์์ด์ ๋์ผํ ๊ฐ์ฒด๋ก ๊ฐ์ฃผ๋๊ณ , ๋ค๋ฅธ ๋ฌธ์์ด์ ๊ฐ์ String ๊ฐ์ฒด๋ ๋ค๋ฅธ ๊ฐ์ฒด๋ก ๊ฐ์ฃผํฉ๋๋ค.
HashSet Implementation
import java.util.*;
class GFG {
public static void main(String[] args)
{
// Creating an empty HashSet
HashSet<String> h = new HashSet<String>();
// Adding elements into HashSet
h.add("India");
h.add("Australia");
h.add("South Africa");
// Adding duplicate elements
h.add("India");
// Displaying the HashSet
System.out.println(h);
System.out.println("List contains India or not:"
+ h.contains("India"));
// Removing items from HashSet
// using remove() method
h.remove("Australia");
System.out.println("List after removing Australia:" + h);
// Display message
System.out.println("Iterating over list:");
// Iterating over hashSet items
Iterator<String> i = h.iterator();
// Holds true till there is single element remaining
while (i.hasNext())
// Iterating over elements
// using next() method
System.out.println(i.next());
}
}
Output
[South Africa, Australia, India]
List contains India or not:true
List after removing Australia:[South Africa, India]
Iterating over list:
South Africa
India
2. LinkedHashSet
• HashSet๊ณผ ๋์ผํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง์ง๋ง LinkedHashSet์ ์ฝ์ ๋ ์์๋๋ก ๋ฐ๋ณตํฉ๋๋ค. ( ์์ ๋ณด์ฅ )
- HashSet์ ์ ๋ ฌ๋ ๋ฒ์
• HashSet๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ค๋ณต ๊ฐ์ ํ์ฉํ์ง ์์ต๋๋ค.
3. TreeSet
• SortedSet Interface ๋ฅผ ๊ตฌํํ TreeSet์ ๋ฐ์ดํฐ์ ๊ฐ์ค์น์ ๋ฐ๋ฅธ ์์๋๋ก ์ ๋ ฌ๋จ์ ๋ณด์ฅํฉ๋๋ค.
• ์ด์ง ํ์ ํธ๋ฆฌ์ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
• HashSet๋ณด๋ค ๋ฐ์ดํฐ์ ์ถ๊ฐ์ ์ญ์ ๋ ์๊ฐ์ด ๋ ๊ฑธ๋ฆฌ์ง๋ง ๊ฒ์๊ณผ ์ ๋ ฌ์๋ ์ ๋ฆฌํฉ๋๋ค.
• ์ ๋ ฌ๋ ํํ๋ก ์๋ค๋ณด๋ ํน์ ๊ตฌ๊ฐ์ ์งํฉ์์๋ค์ ํ์ํ ๋ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
• ์ค๋ณต๋์ง ์์ผ๋ฉด์ ํน์ ๊ท์น์ ์ํด ์ ๋ ฌ๋ ํํ์ ์งํฉ์ ์ฐ๊ณ ์ถ์ ๋ ์ฌ์ฉํฉ๋๋ค.
TreeSet ๋ด๋ถ ๋ก์ง
TreeSet์ ๊ธฐ๋ณธ์ ์ผ๋ก Red-Black Tree์ ๊ฐ์ ์์ฒด ๊ท ํ ์ด์ง ๊ฒ์ ํธ๋ฆฌ์ ๊ตฌํ๋์ด ์์ต๋๋ค.
์ ๋ ฌ๋ ๋ฐฉ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ฐ์ฐ์ ์ํํ๊ธฐ ์ํ ๊ฐ์ฅ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ค ํ๋๋ก ๊ฐ์ฃผํฉ๋๋ค.
Red-Black Tree
: ์๊ฐ ๊ท ํ ์ด์ง ํ์ ํธ๋ฆฌ๋ก์ ๋ํ์ ์ผ๋ก ์ฐ๊ด ๋ฐฐ์ด ๋ฑ์ ๊ตฌํํ๋๋ฐ ์ฐ์ด๋ ์๋ฃ๊ตฌ์กฐ
: ๋ถ๋ชจ๋ ธ๋๋ณด๋ค ์์ ๊ฐ์ ๊ฐ์ง๋ ๋ ธ๋๋ ์ผ์ชฝ ์์์ผ๋ก, ํฐ ๊ฐ์ ๊ฐ์ง๋ ๋ ธ๋๋ ์ค๋ฅธ์ชฝ ์์์ผ๋ก ๋ฐฐ์นํ์ฌ ๋ฐ์ดํฐ์ ์ถ๊ฐ๋ ์ญ์ ์ ํธ๋ฆฌ๊ฐ ํ์ชฝ์ผ๋ก ์น์ฐ์ณ์ง์ง ์๋๋ก ๊ท ํ์ ๋ง์ถฅ๋๋ค.
: ๋ชจ๋ ์์ ์ ๋ํด ํธ๋ฆฌ์ ๋์ด๊ฐ ํญ์ O(log(N))์ธ์ง ํ์ธํ๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ, ์ ๊ฑฐ ๋ฐ ๊ฒ์๊ณผ ๊ฐ์ ์์ ์๋ O(log(N)) ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค.
: ๋ฐ๋ผ์ ์ ๋ ฌ๋ ๋ฐฉ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ฐ์ฐ์ ์ํํ๊ธฐ ์ํ ๊ฐ์ฅ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ค ํ๋๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
ํ์ต์ ๋ง์ ๋์์ด ๋ ๋งํฌ๋ฅผ ์ฐธ์กฐํ์ต๋๋ค. ๐
์ฐธ์กฐ ๋ฐ ์ถ์ฒ
'๐ฐJAVA > Basic' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ JAVA ] Reflection (0) | 2022.07.24 |
---|---|
[ JAVA ] Garbage Collection (0) | 2022.07.01 |
[JAVA ] List Interface (0) | 2022.06.20 |
[JAVA ] Collection (0) | 2022.06.20 |
[ JAVA ] Optional (0) | 2022.06.15 |