List 인터페이스
- Collection 하위 인터페이스
- 객체를 순서에 따라 저장하고 관리하는데 필요한 메서드가 선언된 인터페이스
- 배열의 기능을 구현하기 위한 메서드가 선언됨
- ArrayList, Vector, LinkedList
ArrayList와 Vector
- 객체 배열 클래스
- Vector는 자바 2부터 제공된 클래스
- 일반적으로 ArrayList를 더 많이 사용
- Vector는 멀티 쓰레드 프로그램에서 동기화를 지원
- 동기화(synchronization) : 두 개의 쓰레드가 동시에 하나의 리소스에 접근할 때 순서를 맞추어서 데이터의 오류가 방지하지 않도록 함
- capacity와 size는 다른 의미
- capacity : 배열의 용량
- size : 배열 안에 있는 요소(element)의 수
- 우리가 10개짜리 배열을 만들었다고 해도 element는 3개만 들어갈 수도 있음
ArrayList와 LinkedList
- 둘 다 자료의 순차적 구조를 구현한 클래스
- ArrayList는 배열을 구현한 클래스로 논리적 순서와 물리적 순서가 동일함
- LinkedList는 논리적으로 순차적인 구조지만, 물리적으로는 순차적이지 않을 수 있음
LinkedList 구조
LinkeList에서 자료의 추가와 삭제
- 추가
- 삭제
ArrayList와 LinkedList의 차이는 배열과 LinkedList의 차이와 동일
LinkedList의 구조는 next element에 대한 레퍼런스를 가지고 있고
자료를 추가하거나 삭제하는 데 들어가는 비용이 굉장히 효율적
ArrayList는 좀 더 빨리 i번째에 위치한 요소를 찾을 수 있다
package collection;
import java.util.LinkedList;
public class LinkedListTest {
public static void main(String[] args) {
LinkedList<String> myList = new LinkedList<>();
myList.add("A");
myList.add("B");
myList.add("C");
// 대부분의 컬렉션은 toString()이 제공됨
System.out.println(myList);
myList.add(1, "D");
System.out.println(myList);
myList.removeLast();
System.out.println(myList);
for(int i=0; i<myList.size(); i++) {
String s = myList.get(i); // get은 List에만 있는 메서드(set 인터페이스에는 없다)
System.out.println(s);
}
}
}
출력
[A, B, C]
[A, D, B, C]
[A, D, B]
A
D
B
'Java, Spring 🌱 > 박은종 Java 객체지향 프로그래밍' 카테고리의 다른 글
[박은종 Java 객체지향 프로그래밍 #50] 컬렉션 프레임워크란? (0) | 2024.01.23 |
---|---|
[박은종 Java 객체지향 프로그래밍 #49] 제네릭 프로그래밍 (0) | 2024.01.23 |