List는 배열과 비슷하지만 순서가 있고 중복이 허용됩니다.
그리고 동적 할당이 가능해서 배열보다 편리하게 사용이 가능합니다.
java.util.List 인터페이스는 java.util.Collection을 상속 받습니다.
그리고 ArrayList, LinkedList, Vector, Stack 클래스를 통해 구현됩니다.
리스트에는 다양한 메서드들이 있습니다. 코드를 통해 하나씩 알아 보겠습니다.
참고로 ArrayList, LinkedList, Vector의 기본적인 사용법은 동일합니다.
import java.util.List;
import java.util.ArrayList;
public class BaseList {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
//add - value
list.add("A");
list.add("B");
list.add("C");
list.add("E");
System.out.println(list); //[A, B, C, E]
//add - index
list.add(3, "D");
System.out.println(list); //[A, B, C, D, E]
//indexOf
int index = list.indexOf("C");
System.out.println(index); //2
//get
System.out.println(list.get(1)); //B
//size
System.out.println(list.size()); //5
//contains
System.out.println(list.contains("C")); //true
//remove - value
list.remove("C");
System.out.println(list); //[A, B, D, E]
//remove - index
list.remove(1);
System.out.println(list); //[A, D, E]
//set
list.set(0, "C");
System.out.println(list); //[C, D, E]
//clear
list.clear();
System.out.println(list); //[]
}
}
이번에는 좀 더 다양한 메서드를 사용해 보겠습니다.
package com.devfoxstar.datastructure.list;
import java.util.*;
public class PlusList {
public static void main(String[] args) {
List<String> list = new ArrayList<>(Arrays.asList("A", "C", "B"));
//for
for (int i=0; i<list.size(); i++) {
System.out.println(list.get(i)); //A C B
}
//foreach
for (String item : list) {
System.out.println(item); //A C B
}
//foreach - Lambda
list.forEach(s -> System.out.println(s)); //A C B
//while - Iterator
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next()); //A C B
}
//Sort - Asc
Collections.sort(list);
list.forEach(s -> System.out.println(s)); //A B C
//Sort - Desc
Collections.sort(list, Collections.reverseOrder());
list.forEach(s -> System.out.println(s)); //C B A
//String.join
String join = String.join(",", list);
System.out.println(join); //C, B, A
}
}