Day 19(21.10.01) - Gomserker/Java-101 GitHub Wiki
- Framework : ์ํํธ์จ์ด์ ํน์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ์ํธ ํ๋ ฅํ๋ ํด๋์ค์ ์ธํฐํ์ด์ค์ ์งํฉ
- Library : ๋จ์ ํ์ฉ์ด ๊ฐ๋ฅํ ๋๊ตฌ๋ค์ ์งํฉ
์ด ๋์ ์ฐจ์ด๋ ๊ฒฐ๊ตญ ๋๊ฐ ์ ์ด๊ถ์ ๊ฐ์ง๊ณ ์๋์ง์์ ๋ฐ์ํ๋ค. Framework๋ ์์ฒด์ ์ผ๋ก ํ๋ฆ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ฌ์ฉ์๊ฐ ๊ทธ ์์ ํ์ํ ์ฝ๋๋ฅผ ์์ฑํ๋ค. ๋ฐ๋ฉด, Library๋ ์ฌ์ฉ์๊ฐ ํ๋ฆ์ ์ ์ดํ๋ฉฐ ์ํฉ์ ๋ฐ๋ผ ๊ฐ์ ธ๋ค ์ฐ๋ ๊ฒ์ด๋ค. ์ฝ๊ฒ ๋งํ๋ฉด
์ฐ๋ฆฌ๋ Library์๊ฒ ๋ฌด์์ ํด์ผํ ์ง ์๋ ค์ฃผ๊ณ , Framework๋ ์ฐ๋ฆฌ์๊ฒ ๋ฌด์์ ํด์ผํ ์ง ์๋ ค์ฃผ๋ ๊ฒ์ด๋ค.
List๋ ์์๋ฅผ ๊ฐ์ง๋ ์์๋ค์ ๋ชจ์์ผ๋ก ์ค๋ณต๋ ์์๋ฅผ ๊ฐ์ง ์ ์๋ค. ๋ํ, ๋ฐฐ์ด๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์์น(์ธ๋ฑ์ค)๋ฅผ ์ฌ์ฉํ์ฌ ์์์ ์ ๊ทผํ๋ค.
๋ณธ ๋ฌธ์์์๋ ArrayList ํ๋๋ง์ ๋ค๋ฃฌ๋ค. LinkedList์ ๋ํ ์ค๋ช
์ ์ถํ ๊ธฐ์ฌํ ์์ ์ด๋ค.
ArrayList๋ ์์๋ค์ ์ธ๋ฑ์ค๋ก ์ ๊ทผํ์ฌ ์ฌ์ฉํ๋ค๋ ๋ถ๋ถ์์ ๋ฐฐ์ด๊ณผ ์ ์ฌํ๋ค. ํ์ง๋ง ์ ArrayList๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ผ๊น? ๊ทธ๊ฒ์, ๋ฐฐ์ด์ ๊ตฌ์กฐ์ ์ธ ๋ฌธ์ ์ ์์ ํ์ธํ ์ ์๋๋ฐ, ๋ฐฐ์ด์ ์์ฑํ ๋ ๊ทธ ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋๋ค๋ ๊ฒ์ด๋ค. ์ถ๊ฐ๋๋ ๋ฐ์ดํฐ๊ฐ ๊ธฐ์กด์ ๋ฐฐ์ด์ ์ธ๋ฑ์ค ์๋ฅผ ์ด๊ณผํ๋ฉด ์ด๊ณผ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ค. ๊ทธ๋ ๋ค๊ณ ์ฒ์์ ๋ฐฐ์ด์ ์์ฑํ ๋ ๊ทธ ํฌ๊ธฐ๋ฅผ ํฌ๊ฒ ์ค์ ํ๋ฉด ๊ณต๊ฐ ๋ญ๋น๊ฐ ์๋นํ ๊ฒ์ด๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, ArrayList๋ ์ ์ฅ๋๋ ๋ฐ์ดํฐ์ ๊ฐฏ์์ ๋ฐ๋ผ ํฌ๊ธฐ๊ฐ ์๋์ผ๋ก ๋ณ๊ฒฝ๋๋ค.
ArrayList๋ ํ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ง๋ ์ ๋ค๋ฆญ ํด๋์ค๋ก ์ ๊ณต๋๋ค. ๋ฐ๋ผ์, ArrayList๋ฅผ ์์ฑํ๋ ค๋ฉด ํ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ง์ ํด์ผ ํ๋ค. ์๋ฅผ ๋ค์ด, ์ ์ฅํ๋ ค๋ ๋ฐ์ดํฐ์ ํ์ ์ด ๋ฌธ์์ด์ด๋ผ๋ฉด ์๋์ ๊ฐ์ด ์์ฑํ๋ค.
ArrayList<String> list = new ArrayList<String>();์์ฑ๋ ArrayList ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ค๋ฉด 'add()' ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค. ์์น๋ฅผ ์ง์ ํด์ ์ ์ฅํ ์๋ ์๋ค.
list.add("Milk");
list.add("Bread");
list.add("Butter");
list.add(0, "Heavy Cream"); -> ๋ณ๋์ ๋ช
๋ น์ด๊ฐ ์์ด๋ ํด๋น ์ธ๋ฑ์ค์ ์๋ฃ๋ฅผ ์์ ํ ์ ์๋ค.ํน์ ํ ์์น์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ค๋ฉด 'set()' ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
list.set(3, "Ginger"); -> 3๋ฒ ์ธ๋ฑ์ค์ Ginger ์ถ๊ฐ, ArrayList์ ํฌ๊ธฐ๋ ๊ฐ๋ณ์ ์ด๋ฏ๋ก ์ถ๊ฐํด์ ๊ณ์ ์ด์ด๋๊ฐ ์ ์๋ค.๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ ค๋ฉด 'remove()' ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
list.remove(1);import java.util.ArrayList;
public class ArrayListTest {
public static void main(String args[]) {
ArrayList<String> list = new ArrayList<String>();
list.add("Milk");
list.add("Bread");
list.add("Butter");
list.add(3, "Ginger"); //3๋ฒ ์ธ๋ฑ์ค์ Ginger ์ถ๊ฐ, ArrayList์ ํฌ๊ธฐ๋ ๊ฐ๋ณ์ ์ด๋ฏ๋ก ์ถ๊ฐํด์ ๊ณ์ ์ด์ด๋๊ฐ ์ ์๋ค.
list.set(0, "Heavy Cream"); //๋ณ๋์ ๋ช
๋ น์ด๊ฐ ์์ด๋ ํด๋น ์ธ๋ฑ์ค์ ์๋ฃ๋ฅผ ์์ ํ ์ ์๋ค.
list.remove(1);// 1๋ฒ ์ธ๋ฑ์ค์ ์๋ฃ ์ญ์ . ์ญ์ ๋ ์๋ฃ๋ ๊ณต๋์ผ๋ก ๋จ์ง์๊ณ ๋ค์ ์๋ ์๋ฃ๋ค์ด ํ ์นธ์ฉ ๋น๊ฒจ์ง๋ ๊ตฌ์กฐ๋ค. LinkedList์์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ .
for(int i=0; i<list.size();i++) {
System.out.println(list.get(i));
}
//for-each ๊ตฌ๋ฌธ์ ํ์ฉํด list ๊ฐ์ฒด์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ฌ ์ ์๋ค.
System.out.println("--------------");
for(String s : list) {
System.out.println(s);
}
}
}Result
Heavy Cream
Butter
Ginger
--------------
Heavy Cream
Butter
Ginger
ArrayList์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ ค๋ฉด for-each ๋ฃจํ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
List๋ ์์ ๊ฐ์ ์์๊ฐ ์กด์ฌํ๋ค๋ ๊ฒ์ ํ์ธํ๋ค. ํ์ง๋ง ์์์ ์๊ด์์ด ์๋ฃ๋ฅผ ์ ์ฅํ๊ณ ์ถ์ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ ์๋ฃ ๊ตฌ์กฐ๊ฐ Set(์งํฉ)์ด๋ค. ๋๋ฌธ์ ์งํฉ์ ํน์ฑ์ Set์ ์ค๋ณต๋ ์๋ฃ๋ฅผ ์ ์ฅํ ์ ์๋ค. ์๋ฐ์์๋ Set Interface์ ๋ํด HashSet, TreeSet, LinkedHashSet. ์ด๋ ๊ฒ ์ธ๊ฐ์ง๊ฐ ๊ตฌํ๋์ด ์๋ค. ์ด ์ค์์๋ HashSet์ Hash Table์ ์๋ฃ๋ฅผ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ด ๊ฐ์ฅ ๋ฐ์ด๋๋ค. ํ์ง๋ง, ์์๋ค์ ์์๊ฐ ์ผ์ ํ์ง ์๋ค๋ ๋จ์ ์ด ์๋ค. ๋ณธ ๋ฌธ์์์๋ ๋จผ์ ์์๋ฅผ ํตํด HashSet์ ๋ํด ์ ๋ฆฌํ๊ณ ์ ํ๋ค.
import java.util.HashSet;
public class HashSetTest {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("Milk");
set.add("Butter");
set.add("Cheese");
set.add("Butter");
set.add("Ham");
set.add("Ham");
for (String s:set) {
System.out.println(s);
}
}
}Result
Ham
Butter
Cheese
Milk
๋ฉ์๋๋ Collection ์ธํฐํ์ด์ค๊ฐ ๋์ผํ๊ฒ ๊ฐ๊ณ ์๊ธฐ์ ๋์ผํ๋ค. ๋ค๋ง, Set์ ํน์ง์ ์ค๋ณต๋ ์๋ฃ๋ ์ ์ฅ๋์ง ์๊ธฐ์ "Ham"๊ณผ "Butter"๊ฐ ์ค๋ณต์ผ๋ก ํ์๋์ง ์๋๋ค.