Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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
- mac
- lazy loading
- ์ค๋ ์์ฐ์
- ์ฝ๋ํ๋ก๊ทธ๋๋จธ์ค
- EFCore
- ๋ผ๋๋ฌด์คdvd
- ViewModel
- c#
- scanner
- extjs
- minimalAPI
- JavaScript
- error
- ์์
- dbContext
- ๋ช ์์ ์ธ๋ํค
- extraParams
- Request
- ์์ค๊ฐ๋ ์ค๋
- .net
- JSON
- LINQ
- React
- Config
- ORM
- intellij
- vscode
- Store
- c#์ฝ๋ฉ์๊ธฐ์ ์ค์ ํธ
- ๋์ ๋ณธ์์์
Archives
- Today
- Total
ejyoo's ๊ฐ๋ฐ ๋ ธํธ
Set & TreeSet ๋ณธ๋ฌธ
๐ก Set์ ๋ฐ์ดํฐ์ ์์๊ฐ ์๊ณ ์ค๋ณต์ ํ์ฉํ์ง ์๋๋ค.
์์๊ฐ ์๋ค๋ ๋ง์ ๋ฐ์ดํฐ ์ถ์ถ ์ index๋ก ์ถ์ถํ ์ ์๋ ์๋๋ก ๊ธฐ์ค์ ์ผ์ผ๋ฉด ๋๋ค.
List๋ index๋ก ์ถ์ถํ ์ ์์ด์ ์์๊ฐ ์๋ค๊ณ ํ๋ ๊ฒ์ด๊ณ
Set์ index๋ก ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ์ ์๊ณ iterator๋ก ๋ฝ๊ธฐ๋๋ฌธ์ ๊ทธ๋ฐ๊ฒ์ด๋ค.
Set์ ๊ทธ๋ฅ ๋ฐ์ดํฐ ์งํฉ์ด๋ค.
๐ก Set์ CRUD
C : add
R : Iterator๋ฅผ ์ฌ์ฉํ์ฌ์ฝ์.
U : remove ํ add
D : remeve
public static void main(String[] args) {
Set hs1 = new HashSet();
// Set์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ๋๋ add()๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
hs1.add("DD");
hs1.add("AA");
hs1.add(2);
hs1.add("CC");
hs1.add("BB");
hs1.add(1);
hs1.add(3);
System.out.println("Set ๋ฐ์ดํฐ : " + hs1);
System.out.println();
// Set์ ๋ฐ์ดํฐ์ ์์๊ฐ ์๊ณ , ์ค๋ณต์ ํ์ฉํ์ง ์๋๋ค.
// ๊ทธ๋์ ์ด๋ฏธ ์๋ ๋ฐ์ดํฐ๋ฅผ add ํ๋ฉด false๋ฅผ ๋ฐํํ๊ณ
// ๋ฐ์ดํฐ๋ ์ถ๊ฐ๋์ง ์๋๋ค.
boolean isAdd = hs1.add("FF");
System.out.println("์ค๋ณต๋์ง ์์ ๋ : " + isAdd);
System.out.println("Set ๋ฐ์ดํฐ : " + hs1);
System.out.println();
// ์ค๋ณต์ด๋ฉด ADD ๋์ง ์์.
isAdd = hs1.add("CC");
System.out.println("์ค๋ณต๋ ๋ : " + isAdd);
System.out.println("Set ๋ฐ์ดํฐ : " + hs1);
System.out.println();
// Set ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ค๋ฉด ์์ ํ๋ ๋ช
๋ น์ด ๋ฐ๋ก ์๊ธฐ ๋๋ฌธ์
// ํด๋น ์๋ฃ๋ฅผ ์ญ์ ํ ํ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํด ์ฃผ์ด์ผ ํ๋ค.
// ์ญ์ ํ๋ ๋ฉ์๋
// 1) clear() => Set ๋ฐ์ดํฐ ์ ์ฒด ์ญ์
// 2) remove(์ญ์ ํ ์๋ฃ) => ํด๋น ์๋ฃ ์ญ์
// ์) 'FF'๋ฅผ 'EE'๋ก ์์ ํ๊ธฐ
hs1.remove("FF");//FF์๋ฃ ์ญ์
System.out.println("์ญ์ ํ Set ๋ฐ์ดํฐ : " + hs1);
System.out.println();
hs1.add("EE");//EE์๋ฃ ์ถ๊ฐ
System.out.println("์ถ๊ฐ ํ Set ๋ฐ์ดํฐ : " + hs1);
System.out.println();
// hs1.clear(); //์ ์ฒด ์๋ฃ ์ญ์
// System.out.println("Clear ํ Set ๋ฐ์ดํฐ : " + hs1);
System.out.println("Set์ ์๋ฃ ๊ฐ์ : " + hs1.size());
System.out.println();
// Set์ ๋ฐ์ดํฐ์ ์์๊ฐ ์๊ธฐ ๋๋ฌธ์ List์ฒ๋ผ
// ์ธ๋ฑ์ค๋ก ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ๋ถ๋ฌ์ฌ ์ ์๋ค.
// ๊ทธ๋์ ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ์ป๊ธฐ ์ํด์๋ Iterator๋ก ๋ณํํด์ผ ํ๋ค.
// Set์ ๋ฐ์ดํฐ๋ฅผ Iterator๋ก ๋ณํํ๊ธฐ => Set์ iterator() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ๋๋ค.
// Set์ด๋ผ๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ฉด Iterator ๊ฐ์ฒด๋ฅผ ๊ฐ๊ณ ์๋ค.
Iterator it = hs1.iterator();
// ๋ฐ์ดํฐ์ ๊ฐ์๋งํผ ๋ฐ๋ณตํ๊ธฐ
// hasNext() ๋ฉ์๋ => ํฌ์ธํฐ ๋ค์ ์์น์ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด true, ์์ผ๋ฉด false๋ฅผ ๋ฐํํ๋ค.
while(it.hasNext()) {//๋ค์ ์๋ฃ๊ฐ ์๋์ง ๊ฒ์ฌ
// next()๋ฉ์๋ => ํฌ์ธํฐ๋ฅผ ๋ค์ ์๋ฃ ์์น๋ก ์ด๋ํ๊ณ , ์ด๋ํ ์์น์ ์๋ฃ๋ฅผ ๋ฐํํ๋ค.
System.out.println(it.next());
}
}
๐ก ์ค๋ณต๋์ง ์๋ ์ ์ 5๊ฐ ๋ง๋ค๊ธฐ => HashSet์ด์ฉ
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
public class T05_SetTest {
public static void main(String[] args) {
// 1~100์ฌ์ด์ ์ค๋ณต๋์ง ์๋ ์ ์ 5๊ฐ ๋ง๋ค๊ธฐ
// ๋ฐ์ดํฐ๊ฐ ์ค๋ณต๋์ง ์๋ค๋๊ฒ์ ๋ณด์ฅ๋ฐ์ ์ ์๊ธฐ ๋๋ฌธ์ Set์ ์ฌ์ฉํจ
HashSet<Integer> intRnd = new HashSet<Integer>();
// while๋ฌธ์ ๊ณ์ ๋ ์ ์์.(intRnd๊ฐ ์ค๋ณต๋์ง ์์ ๋ฐ์ดํฐ 5๊ฐ๊ฐ ๋ ๋๊น์ง)
// ๋๋คํจ์ ๋ฝ์ ๋ ๊ฐ์ ์๊ฐ ๋์ฌ ์ ์์.
while(intRnd.size() < 5) {//๋ฐ์ดํฐ๊ฐ 5๊ฐ๊ฐ ๋ ๋ ๊น์ง ๋ฐ๋ณต
int num = (int)(Math.random() * 100 + 1);
intRnd.add(num);
}
System.out.println("๋ง๋ค์ด์ง ๋์๋ค : " + intRnd);
// Collection ์ ํ์ ๊ฐ์ฒด๋ค์ ์๋ก ๋ค๋ฅธ ์๋ฃ๊ตฌ์กฐ๋ก ์ฝ๊ฒ ๋ณ๊ฒฝํด์ ์ฌ์ฉํ ์ ์๋ค.
// ๋ค๋ฅธ ์ข
๋ฅ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์์ฑ์์ ๋ณ๊ฒฝํ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
List<Integer> intRndList = new ArrayList<Integer>(intRnd);
System.out.println("List ์๋ฃ ์ถ๋ ฅ...");
// for(int i = 0 ; i < intRndList.size() ; i++) {
// System.out.println(intRndList.get(i));
// }
for(Integer num : intRndList) {
System.out.println(num + " ");
}
}
๐ก TreeSet
์ฝ์ ํ ๋ ์ ๋ ฌ์ด ๋ผ์ ๋ค์ด๊ฐ๋ค.
๊ฒ์์ ์ต์ ํ ๋์ด์์.
import java.util.SortedSet;
import java.util.TreeSet;
public class T06_TreeSetTest {
public static void main(String[] args) {
// TreeSet์ ์๋์ ๋ ฌ ๊ธฐ๋ฅ์ด ์๋ค.
// TreeSet ๋ฉ์๋๋ฅผ ํธ์ถํ๊ธฐ ์ํด TreeSet ๊ฐ์ฒด ์์ฑํจ.
TreeSet<String> ts = new TreeSet<String>();
// ์์ด ๋๋ฌธ์๋ฅผ ๋ฌธ์์ด๋ก ๋ฐํํ์ฌ TreeSet์ ์ ์ฅ
// TreeSet์ Add ํ์๋ง์ ์ ๋ ฌ์ด๋๋ฏ๋ก ์์๋ก ๋ฌธ์๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ฝ์
ํจ.
for(char ch='Z'; ch>='A'; ch--) {
// ์บ๋ฆญํฐ ํ์
์ ๋ฌธ์๋ก ๋ฐ๊พธ์ด์ฃผ์ด์ผํ๊ธฐ ๋๋ฌธ์ valueOf๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ณํ ํด์ผํ๋ค.
// ๋ํผํด๋์ค์๋ valueOf๊ฐ ์กด์ฌํ๋ค.
// String temp = (String) ch;//์ค๋ฅ ๋ฐ์ํจ.
// ์ฉ๋ฑ๋ง์ ํ์
์ ๋ณํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.(์บ์คํ
์ด ์๋๋ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ)
String temp = String.valueOf(ch);
// ์บ์คํ
์ ํด์ผ๋๋ ๊ฒฝ์ฐ : Object -> String์ ๋ฃ์ ์ ์๋ค.
Object obj = new String("AAA"); //๊ฐ๋ฅ
// ์์ ๊ฒฝ์ฐ๋ String ๊ฐ์ฒด๋ฅผ ๋ฃ์ด์ค๊ฒ ๋ฟ์ด์ง String์ ๋ฉ์๋๋ฅผ ์ด์ฉํ ์ ์๋ ๊ฒ์ ์๋๋ค.
// obj. ์ ๋คํ์ฑ์ผ๋ก ์ธํด String์ผ๋ก ์ค์ฌ์ก๊ธฐ๋๋ฌธ์ ๋ฉ์๋๋ Object ๊ฐ์ฒด์ ๋ฉ์๋๋ง ๋ณด์ฌ์ง๋ ๊ฒ์ด๋ค.
// obj. => Object ๋ฉ์๋๋ง ํ์ํจ
// ๋ฐ๋ผ์ ์บ์คํ
์ ํตํ์ฌ String ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค.(๋ค์ด ์บ์คํ
)
// ((String)obj). => Object, String ๋ฉ์๋ ํ์ํจ.
//
ts.add(temp);
}
System.out.println("TreeSet ์๋ฃ : " + ts);
// TreeSet์ ์ ์ฅ๋ ์๋ฃ ์ค ํน์ ํ ์๋ฃ๋ณด๋ค ์์ ์๋ฃ๋ฅผ ์ฐพ์์ SortedSet์ผ๋ก ๋ฐํํ๋ ๋ฉ์๋๊ฐ ์๋ค.
// => headSet(๊ธฐ์ค๊ฐ) : ๊ธฐ๋ณธ์ ์ผ๋ก '๊ธฐ์ค๊ฐ'์ ํฌํจ์ํค์ง ์๋๋ค.
// => headSet(๊ธฐ์ค๊ฐ, ๋
ผ๋ฆฌ๊ฐ) : ๋
ผ๋ฆฌ๊ฐ์ด true์ด๋ฉด '๊ธฐ์ค๊ฐ'์ ํฌํจ์ํจ๋ค.
SortedSet<String> ss1 = ts.headSet("K");
System.out.println("K ์ด์ ์๋ฃ : " + ss1);//๊ธฐ์ค๊ฐ ๋ฏธํฌํจ
System.out.println("K ์ด์ ์๋ฃ (๊ธฐ์ค๊ฐ ํฌํจ) : " +
ts.headSet("K", true));
// '๊ธฐ์ค๊ฐ' ๋ณด๋ค ํฐ ์๋ฃ๋ฅผ ์ฐพ์ SortedSet์ผ๋ก ๋ฐํํ๋ ๋ฉ์๋
// => tailSet(๊ธฐ์ค๊ฐ) => ๊ธฐ๋ณธ์ ์ผ๋ก '๊ธฐ์ค๊ฐ'์ ํฌํจ์ํจ๋ค.
// => tailSet(๊ธฐ์ค๊ฐ, ๋
ผ๋ฆฌ๊ฐ) => ๋
ผ๋ฆฌ๊ฐ์ด false์ด๋ฉด '๊ธฐ์ค๊ฐ'์ ํฌํจ์ํค์ง ์๋๋ค.
SortedSet<String> ss2 = ts.tailSet("K");
System.out.println("K ์ดํ ์๋ฃ : " + ss2);//๊ธฐ์ค๊ฐ ํฌํจ
System.out.println("K ์ดํ ์๋ฃ (๊ธฐ์ค๊ฐ ๋ฏธํฌํจ) :" +
ts.tailSet("K",false));
// subSet : ๋ถ๋ถ์งํฉ / ์ผ์ ๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํด์ค๊ฒ ๋ค.
// subSet(๊ธฐ์ค๊ฐ1, ๊ธฐ์ค๊ฐ2) => ๊ธฐ์ค๊ฐ1 ~ ๊ธฐ์ค๊ฐ2 ์ฌ์ด์ ๊ฐ์ ๊ฐ์ ธ์จ๋ค.
// => '๊ธฐ์ค๊ฐ1' ํฌํจ, '๊ธฐ์ค๊ฐ2' ๋ฏธํฌํจ
// subSet(๊ธฐ์ค๊ฐ1, ๋
ผ๋ฆฌ๊ฐ1, ๊ธฐ์ค๊ฐ2, ๋
ผ๋ฆฌ๊ฐ2)
// => ๊ฐ ๊ธฐ์ค๊ฐ์ ํฌํจํ ์ง ์ฌ๋ถ๋ฅผ ์ค์ ํ๋ค. (๋
ผ๋ฆฌ๊ฐ์ด true์ด๋ฉด ํฌํจ, false๋ฉด ๋ฏธํฌํจ)
System.out.println("K(ํฌํจ) ๋ถํฐ N(๋ฏธํฌํจ)๊น์ง : " +
ts.subSet("K", true, "N", false));
System.out.println("K(ํฌํจ) ๋ถํฐ N(๋ฏธํฌํจ)๊น์ง : " +
ts.subSet("K", true, "N", true));
System.out.println("K(ํฌํจ) ๋ถํฐ N(๋ฏธํฌํจ)๊น์ง : " +
ts.subSet("K", false, "N", true));
System.out.println("K(ํฌํจ) ๋ถํฐ N(๋ฏธํฌํจ)๊น์ง : " +
ts.subSet("K", false, "N", false));
}
}
'BackEnd > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํด์(Hash) ์๊ณ ๋ฆฌ์ฆ (0) | 2021.03.05 |
---|---|
JDK ๋ฒ์ ๋ณ ์ปดํ์ผ๋ฌ ์ง์๊ธฐ๋ฅ ์ ๋ฆฌ (0) | 2021.03.05 |
Java equals(), HashCode() (2) | 2021.03.04 |
MVC ํจํด (0) | 2021.03.04 |
Maven - Oracle ์ค์ (pom.xml) (0) | 2021.03.04 |