List ์ธํฐํ์ด์ค๋?
๋ฆฌ์คํธ๋ ๋ฐฐ์ด๊ณผ ๋น์ทํ ์๋ฐ์ ์๋ฃํ์ผ๋ก ๋ฐฐ์ด๋ณด๋ค ํธ๋ฆฌํ ๊ธฐ๋ฅ์ ๋ง์ด ๊ฐ์ง๊ณ ์์ต๋๋ค.
๋ฆฌ์คํธ์ ๋ฐฐ์ด์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ ๋ฆฌ์คํธ๋ ํฌ๊ธฐ๊ฐ ์ ํด์ ธ ์์ง ์๊ณ ๋์ ์ผ๋ก ๋ณํ๋ค๋ ์ ์ ๋๋ค.
์ด์ฒ๋ผ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ฅผ ์ ์ ์์ ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
- ์์์ ์ ์ฅ ์์ ์ ์ง
- ๊ฐ์ ์์์ ์ค๋ณต ์ ์ฅ ํ์ฉ
- ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋์ด์์ง ์์ (๋์ ํ ๋น)
- ๋ค์ํ ๋ฉ์๋ ์ ๊ณต
List ์ปฌ๋ ์ ํด๋์ค์ ์ข ๋ฅ
- ArrayList โญ
- LinkedList
- Vector
- Stack
ArrayList, LinkedList, Vector๋ ์ฌ์ฉ ๋ฐฉ๋ฒ์ด ๋์ผ(๋ด๋ถ ๊ตฌ์กฐ๊ฐ ๊ฑฐ์ ๋น์ทํจ)ํ๊ธฐ ๋๋ฌธ์ ๊ฐ ํด๋์ค๋ฅผ ์ ์ธํ ๋์๋ ์๋ ์ฒ๋ผ ๊ฐ๊ฐ ๋ฐ๋ก ์์ฑํ์ง ๋ง๊ณ List๋ก ์์ฑํ์ฌ ํ์์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ํ๋ ๊ฒ์ด ํธํจ.
ArrayList<E> arraylist = new ArrayList<E>();
LinkedList<E> linkedlist = new LinkedList<E>();
Vector<E> vector = new Vector<E>();
List<E> list = new ArrayList<E>();
1. ArrayList ํด๋์ค
- ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์๋ ๊ณต๊ฐ์ ์ ์ฅ๋จ.
- ๊ฒ์์ ์ธ๋ฑ์ค๋ก ํ๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋น ๋ฆ.
- ์ฝ์
/์ญ์ ๋ ๋๋ฆผ(๋จ, ๋งจ ๋ค์ ์ฝ์
/์ญ์ ๋ ๋น ๋ฆ)
์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๊ฐ์ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ ๊ฒฝ์ฐ,
๊ทธ ๋ค์ ์๋ ๊ฐ๋ค์ด ์ถ๊ฐํ๋ ๋งํผ ๋ค๋ก ๋ฐ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์์ฃผ ๊ฐ์ ์ถ๊ฐ/์ญ์ ํ๋ ๊ฒฝ์ฐ์๋ ์ฑ๋ฅ์ด ์ ํ๋จ. - ์ด๋ฅผ ๋ณด์ํ๋ ๊ฒ์ผ๋ก LinkedList ํด๋์ค๊ฐ ์์ ๐ก

import java.util.ArrayList;
public class Sample {
public static void main(String[] args) {
ArrayList<String> pitches = new ArrayList();
pitches.add("138");
pitches.add("129");
pitches.add("142");
System.out.println(pitches);
}
}
ํน์ ์์น์ ์ฝ์
ํด๋น ์ปฌ๋ ์ ์ ์์๋ฅผ ์ถ๊ฐ ํ๊ฑฐ๋ ํด๋น ์ธ๋ฑ์ค ์์น์ ๊ฐ์ ์ฝ์
pitches.add(0, "130");
get
ํน์ ์์น์ ๊ฐ์ ๊ฐ์ ธ ์ฌ ๋
System.out.println(pitches.get(1));
size
ArrayList์ ๊ฐฏ์๋ฅผ ๋ฆฌํดํ๋ค.
System.out.println(pitches.size());
contains
๋ฆฌ์คํธ ์์ ํด๋น ํญ๋ชฉ์ด ์๋์ง๋ฅผ ํ๋ณํ์ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ boolean์ผ๋ก ๋ฆฌํดํ๋ค.
System.out.println(pitches.contains("142"));
remove
remove(๊ฐ์ฒด) : ๋ฆฌ์คํธ์์ ๊ฐ์ฒด์ ํด๋น๋๋ ํญ๋ชฉ์ ์ญ์ ํ๊ณ ์ญ์ ํ ๊ฒฐ๊ณผ(true, false)๋ฅผ ๋ฆฌํด
System.out.println(pitches.remove("129"));
true
remove(์ธ๋ฑ์ค) : ํด๋น ์ธ๋ฑ์ค์ ํญ๋ชฉ์ ์ญ์ ํ๊ณ ์ญ์ ๋ ํญ๋ชฉ์ ๋ฆฌํด
System.out.println(pitches.remove(0));
์ด ์ธ ๋ค์ํ ๋ฐฉ๋ฒ!
์ด๋ฏธ ๋ฐ์ดํฐ๊ฐ ๋ฐฐ์ด ํํ๋ก ์กด์ฌํ ๊ฒฝ์ฐ ์ถ๊ฐํ๋ ๋ฒ
public static void main(String[] args) {
String[] data = {"138", "129", "142"};
ArrayList<String> pitches = new ArrayList<>(Arrays.asList(data));
System.out.println(pitches);
}
- asList() ๋ ์ด๋ฏธ ๋ง๋ค์ด์ง ๋ฐฐ์ด์ List์ ์ถ๊ฐ
๋ฆฌ์คํธ ์ ๋ ฌํ๊ธฐ
- ์ค๋ฆ์ฐจ์ ์ ๋ ฌ : Comparator.naturalOrder()
- ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ : Comparator.reverseOrder()
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
public class List {
public static void main(String[] args) {
ArrayList<String> pitches = new ArrayList<>(Arrays.asList("138", "129", "142"));
pitches.sort(Comparator.naturalOrder()); // ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
System.out.println(pitches); // [129, 138, 142] ์ถ๋ ฅ
}
}
pitches.sort(Comparator.reverseOrder());
System.out.println(pitches);
2. LinkedList
์ฌ์ฉ ๋ฐฉ๋ฒ์ ArrayList์ ๋์ผ
LinkedList ํด๋์ค๋ ArrayList ํด๋์ค๊ฐ ๋ฐฐ์ด์ ์ด์ฉํ์ฌ ์์๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์(์ ๊ทธ๋ฆผ ์ฐธ์กฐ)์์ ๋ฐ์ํ๋ ๋จ์ ์ ๊ทน๋ณตํ๊ธฐ ์ํด ๊ณ ์๋์์ต๋๋ค.
LinkedList ํด๋์ค๋ ์ ์ฅ๋ ์์๊ฐ ์์ฐจ์ ์ผ๋ก ์ ์ฅ๋๋ค๋ ๊ฒ์ ArrayList ํด๋์ค์ ๋์ผํ์ง๋ง ์ ์ฅ๋ ์์๊ฐ ๋น์์ฐจ์ ์ผ๋ก ๋ถํฌ๋๋ฉฐ, ์ด๋ฌํ ์์๋ค ์ฌ์ด๋ฅผ ๋งํฌ(link)๋ก ์ฐ๊ฒฐํ์ฌ ๊ตฌ์ฑํฉ๋๋ค.
๋น์์ฐจ์ ์ผ๋ก ๋ถํฌ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ค๊ฐ์ ๊ฐ์ด ์ถ๊ฐ/์ญ์ ๋์ด๋ ๊ทธ ์์๋ค์ ๋งํฌ๋ง ์ฌ์ค์ ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ArrayList์ ๋นํด ํจ์ฌ ๋น ๋ฆ ๋๋ค.
ํ๋ ์ฅ์ ์ด ๊ณง ๋จ์ ์ด ๋์ด ๋น์์ฐจ์ ์ผ๋ก ๋ถํฌํ์ฌ ๊ฒ์์ ๋งค์ฐ ๋๋ฆฝ๋๋ค.


3. Vector
์ฌ์ฉ ๋ฐฉ๋ฒ์ ArrayList์ ๋์ผ
ArrayList์ ๋ค๋ฅธ ์ ์ ๋๊ธฐํ๋(Synchronized) ๋ฉ์๋๋ก ๊ตฌ์ฑ๋์ด ์์ด ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์ ์์ ํจ.
ํ๋ ArrayList์ ๋นํด ์ฑ๋ฅ์ ๋จ์ด์ง.
์ ๋ฆฌํ๋ฉด!!
๊ฐ์ด ๊ณ์ ์ถ๊ฐ ๋์ด์ผ ํ๋ฉด ArrayList
๊ฐ์ ๋ฃ์๋ค ๋บ๋ค๊ฐ ๋ง์ผ๋ฉด LinkedList
์ฌ๋ฌ ์ค๋ ๋์์ ์ฌ์ฉํด์ผ ํ๋ฉด Vector
์ํฉ์ ๋ง๊ฒ ์ ์ ํ ํด๋์ค๋ฅผ ์ฌ์ฉํ์.
๐ธ์ค์ ์์ โ๏ธ
๐ธ : ์ด์ ๊น์ง๋ ๋ธ๋ผ์ผ(<>)์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ๋ง ๋ฃ์ด๋ดค๋ค. ํ๋ฐ ํด๋น ๋ธ๋ผ์ผ ์์๋ ๊ฐ์ฒด ํ์ ๋ ๋ค์ด์ฌ ์ ์๋ค.
์ถํ ์ค์ ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ณํ์ฌ ๊ฐ์ ์ฝ์ด์ฌ ๋๋ ๋๋ถ๋ถ ์๋ ์์ ์ ๊ฐ์ ํํ๋ก ๋ถ๋ฅธ๋ค.
ํด๋์ค๋ ์๋ NameCard ์ฒ๋ผ ๋ฉ์๋ ์์ด ์์ฑ์๋ง ์กด์ฌํ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ์ฉ๋๋ก๋ง ์ฐ๋ ๊ฒฝ์ฐ๋ ๋ง๋ค.
1๋ฒ
public class Main {
public static void main(String[] args) {
List<NameCard> n1 = new Vector<>();
n1.add(new NameCard("์์ฝฉ๋ฏธ","010-1234-1234","aaa@naver.com","Junior",
"์์ธ์ ๊ฐ๋จ๊ตฌ"));
n1.add(new NameCard("ํ๊ธธ๋","010-0987-1234","bbb@kakao.com","Junior",
"์์์ ์ํต๊ตฌ"));
n1.add(new NameCard("๋๋ ๋ฏธ","010-3422-1234","ccc@naver.com","Senior",
"์์ธ์ ์กํ๊ตฌ"));
for(NameCard e : n1) {
System.out.println("์ด๋ฆ : " + e.name);
System.out.println("์ ํ๋ฒํธ : " + e.phone);
System.out.println("๋ฉ์ผ : " + e.mail);
System.out.println("์ง๊ธ : " + e.position);
System.out.println("์ฃผ์: " + e.address);
System.out.println();
}
}
}
class NameCard {
String name;
String phone;
String mail;
String position;
String address;
public NameCard(String name, String phone, String mail, String position, String address) {
this.name = name;
this.phone = phone;
this.mail = mail;
this.position = position;
this.address = address;
}
}
2๋ฒ
public class MenuInfo {
String name; // ๋ฉ๋ด๋ช
int price; // ๋ฉ๋ด์ ๊ฐ๊ฒฉ
String group; // ๋ฉ๋ด์ ๋ถ๋ฅ
String desc; // ๋ฉ๋ด์ ๋ํ ์ค๋ช
public MenuInfo(String name, int price, String group, String desc) {
this.name = name;
this.price = price;
this.group = group;
this.desc = desc;
}
public void getMenuInfo() {
System.out.println("๋ฉ๋ด๋ช
: " + name);
System.out.println("๊ฐ๊ฒฉ : " + price);
System.out.println("๋ถ๋ฅ : " + group);
System.out.println("์ค๋ช
: " + desc);
System.out.println();
}
}
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<MenuInfo> m1 = new ArrayList<>();
m1.add(new MenuInfo("์๋ฉ๋ฆฌ์นด๋
ธ",4500,"์ปคํผ","์์ธํ ๋ง"));
m1.add(new MenuInfo("๋ผ๋ผ",5200,"์ปคํผ","์ฐ์ ๊ฐ ํฌํจ๋์ด ๊ณ ์ํจ"));
MenuInfo test = new MenuInfo("์นด๋ผ๋ฉ๋ง๋ผ์๋", 5800, "์ปคํผ", "์นด๋ผ๋ฉ์ด ๋ค์ด๊ฐ ๋ฌ๋ฌํจ");
m1.add(test);
for(MenuInfo e : m1) e.getMenuInfo();
}
}
๐ธ์๊ณ ๋ฆฌ์ฆ ์์ โ๏ธ
- ๋ฌธ์ : ์ ์ n๊ณผ ์์ ๋ชฉ๋ก์ด ์ฃผ์ด์ก์ ๋, ๋ชฉ๋ก์ ๋ค์ด์๋ ์๊ฐ n์ ๋ฐฐ์์ธ์ง ์๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ ์์ฑ
- ์ ๋ ฅ : ์ฒซ์งธ์ค์ n์ด ์ฃผ์ด์ง, ๋ค์ ์ค ๋ถํฐ ํ ์ค์ ํ ๊ฐ์ฉ ๋ชฉ๋ก์ ๋ค์ด ์๋ ์๊ฐ ์ฃผ์ด์ง (0 ~ 10000)
- ์ถ๋ ฅ : ๋ชฉ๋ก์ ์๋ ์๊ฐ n์ ๋ฐฐ์์ธ์ง ์๋์ง ๊ตฌํ ํ ์์์ ๊ฐ์ด ์ถ๋ ฅ
<์ ๋ ฅ ์์>
3 <- n (์ฃผ์ด์ง ์)
1
7
99
0 <- ๋ฐ๋ณต๋ฌธ์ ๋ํ ์ข ๋ฃ
<์ถ๋ ฅ ์์>
1 is NOT a multiple of 3
7 is NOT a multiple of 3
99 is a multiple of 3
public class Main {
public static void main(String[] args) {
List<Integer> mul = new ArrayList<>();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
while (true) {
int val = sc.nextInt();
if(val == 0) break;
mul.add(val);
}
for(int i = 0; i < mul.size(); i++) {
if(mul.get(i) % n == 0) System.out.printf("%d is a multiple of %d\n",mul.get(i),n);
else System.out.printf("%d is NOT a multiple of %d\n",mul.get(i),n);
}
}
}
๐ธ : ์ ๋ต์ด๋ค.
๊ทผ๋ฐ ์ mul.add(new Integer(val))์ด ์๋๊ณ , add.mul(val)๋ก ์จ๋ ์ค๋ฅ๊ฐ ์๋๋์ง ์๋?
๐ถ : ๊ทธ๊ฑด ์๋ฐ์ Wrapper ํด๋์ค ๋๋ถ์ด์ผ. Wrapper ํด๋์ค๋ ๊ธฐ๋ณธ ํ์ ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐํ์ผ๋ก ์๋ ๋ณํํด์ฃผ๊ธฐ ๋๋ฌธ์ ๋ฒ๊ฑฐ๋กญ๊ฒ Integer๋ก ํ๋ณํ ํ์ง ์์๋ ๋ผ. ๋์ , ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ์ด์ธ์๋ ์ ๋ ๊ฐ์ด ๋ค์ด์ฌ ์ ์์ด.
๐ธ : ํ๋ฅญํด!
'๐๏ธ Backend > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ์๋ฐ(Java) - ์ปฌ๋ ์ ํ๋ ์์ํฌ(3) Set(HashSet) (1) | 2023.01.31 |
|---|---|
| ์๋ฐ(Java) - ์ปฌ๋ ์ ํ๋ ์์ํฌ(2) Map(HashMap, Hashtable, Properties) (0) | 2023.01.31 |
| ์๋ฐ(Java) - ์ปฌ๋ ์ ํ๋ ์์ํฌ (0) | 2023.01.30 |
| ์๋ฐ(Java) - Generics ์ง๋ค๋ฆญ์ค/์ ๋ค๋ฆญ (0) | 2023.01.27 |
| ์๋ฐ(Java) - API ํด๋์ค (7) Arrays ํด๋์ค (0) | 2023.01.27 |