Collection Framework_List
✅ Java List
용도: 순서가 있는 data collection
예시: 쇼핑몰 사이트 찜목록
구현 class:
- ArrayList(Array구조 기반)
- LinkedList(Node구조 기반) class로 구현
내부적으로toString()
이 포함되어 있다.
💡 List의 method
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public static void main(String[] args) {
//generic
List<String> fruitList= new ArrayList<>();
//💡 add: 리스트의 끝에 요소를 추가
//array는 순차적, 넣는 순서대로 들어간다
fruitList.add("Orange");
fruitList.add("Apple");
fruitList.add("Banana");
fruitList.add("Kiwi");
System.out.println("FruitList 요소: "+ fruitList); //FruitList 요소: [Orange, Apple, Banana, Kiwi]
//💡add(int index, E element) 지정된 인덱스에 요소 삽입
//사이에 넣기
fruitList.add(3, "Mango"); //New FruitList 요소: [Orange, Apple, Banana, Mango, Kiwi]
//💡remove(int index) 지정된 인덱스의 요소 제거
fruitList.remove(3); //Removed FruitList 요소: [Orange, Apple, Banana, Kiwi]
//💡get(int index) 지정된 인덱스의 요소 반환
String getFruit= fruitList.get(2); //Banana
//💡set(int index, E element) 지정된 인덱스의 요소를 새로운 요소로 대체
fruitList.set(3, "Pineapple"); //Set FruitList 요소: [Orange, Apple, Banana, Pineapple]
//💡size() 리스트의 element 수 반환
int fruitListSize= fruitList.size(); //4
//💡isEmpty() 리스트가 비어있는지 확인
boolean fruitListEmpty= fruitList.isEmpty(); //false
//💡contains(Object o) 리스트에 지정된 element 있는지 확인
boolean fruitListContains1= fruitList.contains("Banana"); //true
boolean fruitListContains2= fruitList.contains("DragonFruit"); //false
//💡indexOf(Object o) 지정된 요소의 첫 번째 등장 인덱스 반환
int fruitListIndexOf1= fruitList.indexOf("Apple"); //1
int fruitListIndexOf2= fruitList.indexOf("Lemon"); //-1 (찾는 element없으면 -1)
//💡clear() 리스트의 모든 요소 제거
fruitList.clear(); // size = 0
}
ArrayList 🆚 LinkedList
Java List에는 두 종류가 있음
- ArrayList: array 기반, 순차적
- LinkedList: node 기반, 프레임
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
public class ListGetPerfomanceTest {
static final int listSize=10000;
public static void main(String[] args) {
// 🏢 ArrayList
List<Integer> integerList1= new ArrayList<>();
for(int i=0; i<listSize; i++){
integerList1.add(i);
}
// ⛺️ LinkedList
List<Integer> integerList2= new LinkedList<>();
for(int i=0; i<listSize; i++){
integerList2.add(i);
}
//💡 ArrayList 🆚 LinkedList GET Performance 비교
long startTime;
long endTime;
// 🏢 ArrayList
startTime= System.currentTimeMillis();
for(int i=0; i<listSize; i++){
integerList1.get(i);
}
endTime= System.currentTimeMillis();
System.out.println("ArrayList get걸린 시간: " + (endTime-startTime)+ " milliseconds" );
//listSize=10000 일 떄
//ArrayList get걸린 시간: 1 milliseconds
// ⛺️ LinkedList
startTime= System.currentTimeMillis();
for(int i=0; i<listSize; i++){
integerList2.get(i);
}
endTime= System.currentTimeMillis();
System.out.println("LinkedList get걸린 시간: " + (endTime-startTime)+ " milliseconds" );
//listSize=10000 일 떄
//LinkedList get걸린 시간: 50 milliseconds
// ⭐️ get 의 경우 🏢 ArrayList가 더 빠르다
//💡ArrayList 🆚 LinkedList REMOVE Performance 비교
// 🏢 ArrayList
startTime= System.currentTimeMillis();
for(int i=0; i<listSize; i++){
integerList1.add(i);
if(i%5==0) {integerList1.remove(0);}
}
endTime= System.currentTimeMillis();
System.out.println("ArrayList get걸린 시간: " + (endTime-startTime)+ " milliseconds" );
//listSize=10000 일 떄
//ArrayList get하고 remove까지 걸린 시간: 4 milliseconds
// ⛺️ LinkedList
startTime= System.currentTimeMillis();
for(int i=0; i<listSize; i++){
integerList2.add(i);
if(i%5==0) {integerList2.remove(0);}
}
endTime= System.currentTimeMillis();
System.out.println("LinkedList get걸린 시간: " + (endTime-startTime)+ " milliseconds" );
//listSize=10000 일 떄
//LinkedList get하고 remove까지 걸린 시간: 1 milliseconds
// ⭐️ remove 의 경우 ⛺️ LinkedList가 더 빠르다
}
}
This post is licensed under CC BY 4.0 by the author.