리스트는 배열과 비슷한 자바의 자료형으로 배열보다 편리한 기능을 많이 가지고 있다.
리스트와 배열의 가장 큰 차이점은 크기가 정해져 있지 않고 동적으로 변하기 때문에 데이터의 크기를 알 수 없을 때 유용하게 사용할 수 있다.
ex )
list<String> list = new ArrayList<String>();
list.add("내용");
String name = list.get(0);
객체의 배열을 구현한 클래스이며 컬렉션 인터페이스와 그 하위의 List 인터페이스로 구현한다.
객체 순서를 기반으로 순차적으로 자료를 관리하는 프로그램을 구현할 때 사용한다
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);
}
}
해당 컬렉션에 요소를 추가하거나 해당 인덱스 위치에 값을 삽입
list.add(0, "130");
특정 위치의 값을 가져올때
System.out.println(list.get(1));
ArrayList의 갯수를 리턴
System.out.println(list.size());
리스트 안에 해당 항목이 있는지를 판별하여 그 결과를 boolean 으로 리턴
System.out.println(pitches.contains("142"));
리스트에서 객체에 해당되는 항목을 삭제하고 삭제한 결과를 리턴
System.out.println(pitches.remove("129"));
true
이미 데이터가 존재할 경우 데이터 추가하기
public static void main(String[] args) {
String[] data = {"138", "129", "142"};
ArrayList<String> list = new ArrayList<>(Arrays.asList(data));
System.out.println(list);
}
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] 출력
}
}
사용방법은 ArrayList와 동일하다
LinkedList 클래스는 ArrayList클래스의 단점을 보안하기 위해 만들어졌다.
ArrayList는 요소 사이에 삽입이나 삭제를 하려면 뒤의 값들을 전부 미루거나 당겨야 하지만, LinkedList는 요소들 사이를 link로 연결하여 구성하기 때문에 수월하다.
사용방법은 ArrayList와 동일하다
ArrayList와 내부구조가 전부 동일하지만 Vector는 동기화된 메소드로 구성되어 있어 멀티쓰레드 환경에서 안전하다는 차이점이 있다. 다만 ArrayList에 비해 성능은 떨어진다.