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 } }