-
Collection(1) - List, Set, Map๊ฐ๋ฐ/Java 2022. 2. 22. 01:01
์๋ ํ์ธ์,
์ด๋ฒ์๋ ์๋ฐ์์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ํํํ๋ ์ธํฐํ์ด์ค์ธ ์ปฌ๋ ์ (Collection), ๊ทธ๋ฆฌ๊ณ ๊ตฌ์ฒด์ ์ธ ์๋ฃ๊ตฌ์กฐ์ ์ข ๋ฅ์ธ ๋ฆฌ์คํธ(List), ์คํ(Stack) ,ํ(Queue),์ (Set),๋งต(Map)์ ๊ฐ๋ ๊ณผ ์์ ์ฝ๋๋ฅผ ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ปฌ๋ ์ ํ๋ ์์ํฌ๋?
- ๋ค์์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ํํํ๊ณ ์ฌ์ฉํ๋ ํด๋์ค์ ์งํฉ์ ์๋ฏธ
- ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋๋ฐ ํ์ํ ํ๋ถํ๊ณ ๋ค์ํ ํด๋์ค์ ๊ธฐ๋ณธํจ์๋ฅผ ์ ๊ณตํ์ฌ ์ ์ฉ
- ์ปฌ๋ ์ ํ๋ ์์ํฌ์ ๋ชจ๋ ํด๋์ค๋ Collection interface๋ฅผ ๊ตฌํ(implement)ํ๋ ํด๋์ค ๋๋ ์ธํฐํ์ด์คList
์์๊ฐ ์๋ ๋์ด๋ ๋ฐ์ดํฐ๋ฅผ ํํํฉ๋๋ค.
- Arraylist๋ ๋ฐฐ์ด์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ List ์ธํฐํ์ด์ค์ ๋๋ค.
//List - ์์๋ฅผ ์ ์งํ๊ณ , ๋ฐ์ดํฐ์ ์ค๋ณต์ ํ์ฉํ๋ค. List<Integer> integerList = new ArrayList<>(); integerList.add(1); integerList.add(5); integerList.add(4); integerList.add(4); integerList.add(11); integerList.add(10); // ArrayList์ ๊ฐ ํ๊ฐ์ฉ ์ ๋ ฅ System.out.println(integerList); // [1,5,4,4,11,10] Collections.sort(integerList); // list ์ ๋ ฌ - ์ค๋ฆ์ฐจ์ System.out.println(integerList); // [1,4,4,5,10,11] System.out.println(integerList.size()); // arrayList์ ํฌ๊ธฐ ์ถ๋ ฅ integerList.remove(4); // ์ธ๋ฑ์ค๋ฅผ ํ์ฉํ์ฌ ํด๋นํ๋ ๊ฐ ์ ๊ฑฐ System.out.println(integerList); for (int i = 0; i < integerList.size(); i++) { System.out.println(integerList.get(i)); // get์ ์ด์ฉํ์ฌ ๊ฐ 1๊ฐ์ฉ ์ถ๋ ฅ } for (int current : integerList) { System.out.println(current); }
์์ ์ฝ๋๋ฅผ ๋ณด์๋ฉด, ์์๋๋ก 1,5,4,4,11,10์ ๋ฃ์ต๋๋ค. ์ถ๋ ฅํด๋ณด๋ฉด 1,5,4,4,11,10 ๊ทธ๋๋ก ์์๋ฅผ ์ ์งํ๋ฉด์, ๋ ์ค๋ณต๊ฐ์ธ 4๋ ํ์ฉ๋์ด ๋ชจ๋ ๋ค์ด๊ฐ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ ์ธ์ ๋ฐ์ ๋ถ๋ถ์ ์ ๋ ฌ, ํฌ๊ธฐ, ์ ๊ฑฐ, ๊ฐ ํ์ธ์ ๋ํ ํจ์์ฌ์ฉ ๋ถ๋ถ์ด๋ ์ฃผ์์ ์ฐธ๊ณ ํ์ฌ ๋ณด์๋ฉด ๋๊ฒ ์ต๋๋ค :)
Set
์์๋ฅผ ์ ์งํ์ง ์๋ ๋ฐ์ดํฐ์ ์งํฉ์ด๋ฉฐ ๋ฐ์ดํฐ์ ์ค๋ณต์ ํ์ฉํ์ง ์์ต๋๋ค.
- HashSet์ Set ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๋ํ์ ์ธ ์ปฌ๋ ์ ์ ๋๋ค.//Set - ์์๋ฅผ ์ ์งํ์ง ์๊ณ , ๋ฐ์ดํฐ์ ์ค๋ณต์ ํ์ฉํ์ง ์๋๋ค. Set<Integer> integerSet = new HashSet<>(); integerSet.add(1); integerSet.add(1); //์ค๋ณต ์๋ค์ด๊ฐ. integerSet.add(3); integerSet.add(2); integerSet.add(9); integerSet.add(8); System.out.println(integerSet); //[1, 2, 3, 8, 9] Set<String> stringSet = new HashSet<>(); stringSet.add("LA"); stringSet.add("New York"); stringSet.add("LasVegas"); stringSet.add("San Francisco"); stringSet.add("Seoul"); System.out.println(stringSet); stringSet.remove("Seoul"); System.out.println(stringSet); List<String> target = new ArrayList<>(); target.add("New York"); target.add("LasVegas"); stringSet.removeAll(target); //ํ๊บผ๋ฒ์ ์ง์ฐ๊ธฐ - setํ์ ์ removeAllํ๊ณ , Collection ํ์ ์ ๋ฃ์ด์ฃผ๋ฉด, ๊ทธ๊ฒ ์ง์์ง๋ค. System.out.println(stringSet); System.out.println("LA ํฌํจ๋์ด ์๋์? " + stringSet.contains("LA")); //true System.out.println("Seoul ํฌํจ๋์ด ์๋์? " + stringSet.contains("Seoul")); //false System.out.println(stringSet.size()); stringSet.clear(); //๋ค์ง์ฐ๊ธฐ System.out.println(stringSet);
์์ ์ฝ๋์์ ๋ณด์์ผ ํ ๊ฒ์, 1,1,3,2,9,8 ์ด๋ผ๋ ์ซ์๋ฅผ ๋ฃ์์๋, ์ค๋ณต์ซ์์ธ 1์ ํ๋ฒ๋ง ๋ค์ด๊ฐ๊ณ ๋ฃ์ ์ซ์์ ์์๋๋ก ๋์ค์ง ์๋ ๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ ์๋ ๋ถ๋ถ์ ๋ถ๋ถ์ ๊ฑฐ, ์ฌ๋ฌ๊ฐ ํ๊บผ๋ฒ์ ์ ๊ฑฐ, ๊ฐ ํฌํจ์ฌ๋ถ ํ์ธ, ๋ชจ๋ ์ ๊ฑฐ์ ๋ํ ํจ์ ์ฌ์ฉ์ ๋๋ค. ์ฃผ์์ ์ฐธ๊ณ ํ์ฌ ํ์ธํด์ฃผ์ธ์ :)
Map
- HashMap์ ํค(key)์ ๊ฐ(value)์ ํ๋์ ๋ฐ์ดํฐ๋ก ์ ์ฅํ๋ ํน์ง์ ๊ฐ์ง๋๋ค. ์ด๋ฅผ ํตํ์ฌ ํด์ฑ(hashing)์ ๊ฐ๋ฅํ๊ฒ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋๋ฐ ๋ฐ์ด๋ ์ฑ๋ฅ์ ๋ณด์ ๋๋ค.
//Map --> Key, Value๋ฅผ ๊ฐ์ง๋ค. Map<Integer, String> map = new HashMap<>(); map.put(1, "apple"); map.put(2, "berry"); map.put(3, "cherry"); System.out.println(map); System.out.println("1st in map: " + map.get(1)); //1์ด๋ผ๋ key์ ๋ํ ๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ map.remove(2); //๋ถ๋ถ ์ ๊ฑฐ System.out.println(map); System.out.println(map.containsKey(2)); //ํค ํฌํจ์ฌ๋ถ System.out.println(map.containsValue("cherry")); //๊ฐ ํฌํจ์ฌ๋ถ map.clear(); //๋ชจ๋ ์ ๊ฑฐ System.out.println(map);
์์ ์ฝ๋๋ฅผ ๋ณด์๋ฉด, Integer(Keyํ์ ), String(Valueํ์ )์ผ๋ก Key์ Value์ ํ์ ์ ์ง์ ํ ๋ค, ๋ค๋ฅธ ๊ฒ๊ณผ๋ ๋ค๋ฅด๊ฒ put์ ์ด์ฉํ์ฌ (key, value)๋ฅผ ๋ฃ์ด์ฃผ๊ณ ์์ต๋๋ค. ๊ฐ์ ๊บผ๋ด๊ณ ์ถ์๋๋ get(key๊ฐ)์ ํตํด์ ๊ฐ์ ธ์ค๊ณ ์๋ค์. ๊ทธ ์๋์๋ ์ ๊ฑฐ, key์ value์ ํฌํจ์ฌ๋ถ, ์ผ๊ด์ ๊ฑฐ์ ๋ํ ํจ์์ ๋๋ค.
์ ๋ฆฌ
Collection ์ ๋ชจ๋ ์๋ฃ๊ตฌ์กฐ๊ฐ ๊ตฌํ(implement)ํ๋ ์ธํฐํ์ด์ค์ ๋๋ค. ์ค๋ ๋ฐฐ์ด ๋ชจ๋ ์๋ฃ๊ตฌ์กฐ์ ํด๋นํ๋ ํด๋์ค, ์ธํฐํ์ด์ค๋ ์ธ์ ๋ Collection ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ณ ์์ต๋๋ค.
List : ์์๊ฐ ์๋ ๋ฐ์ดํฐ์ ์งํฉ์ด๋ฉฐ ๋ฐ์ดํฐ์ ์ค๋ณต์ ํ์ฉํฉ๋๋ค.
→ ArrayList, LinkedList, Stack ๋ฑ
Set : ์์๋ฅผ ์ ์งํ์ง ์๋ ๋ฐ์ดํฐ์ ์งํฉ์ด๋ฉฐ ๋ฐ์ดํฐ์ ์ค๋ณต์ ํ์ฉํ์ง ์์ต๋๋ค.
→ HashSet, TreeSet ๋ฑ
Map : ํค(key)์ ๊ฐ(value)์ ์์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฐ์ดํฐ์ ์งํฉ์ ๋๋ค. ์์๋ ์ ์ง๋์ง ์์ผ๋ฉฐ ํค๋ ์ค๋ณต์ ํ์ฉ๋์ง ์๊ณ ๊ฐ์ ์ค๋ณต์ ํ์ฉํฉ๋๋ค.
→ HashMap, TreeMap ๋ฑ
์ปฌ๋ ์ ์ธํฐํ์ด์ค์๋ ์ปฌ๋ ์ ํด๋์ค์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ , ์ถ๊ฐํ๊ณ ์ญ์ ํ๋ ๋ฑ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋๋ฐ ๊ธฐ๋ณธ์ ์ธ ๋ฉ์๋๋ค์ ์ ์ํ๊ณ ์์ต๋๋ค.๋ค์ ๊ธ์ ์ด์ด์ ์คํ๊ณผ ํ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค :)
'๊ฐ๋ฐ > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ค์ฒฉํด๋์ค(Nested class)๋ ๋ฌด์์ธ๊ฐ? (0) 2022.04.07 ์ฐธ์กฐ ์๋ฃํ - ๊ธฐ๋ณธ ์์ฑ์, ์ค๋ฒ๋ก๋ฉ(overloading), return (0) 2022.03.21 ๋ณ์ ์ด์ผ๊ธฐ(2) - ์๋ฐ์ ํ์ (์๋ฃํ) (1) 2022.03.17 ๋ณ์ ์ด์ผ๊ธฐ(1) - ์๋ฐ์ 4๊ฐ์ง ๋ณ์ (1) 2022.03.17 ์ ๊ทผ์ ์ด์(access modifier)๋? (0) 2022.02.20