728x90
리스트 컬렉션(List collection)
- 객체를 일렬로 늘어놓은 구조로 이루어져있다.
- 객체를 인덱스로 관리하여 객체 저장시 인덱스가 부여된다.
- 인덱스는 객체를 검색, 삭제할 때 사용한다.
- 객체 자체를 저장하는 것이 아닌 객체의 번지를 참조한다.
- null 저장 가능하다.
- List Collection Interface에는 객체 추가, 검색, 삭제 기능의 메소드가 선언되어 있다.
- 인덱스로 객체를 관리하여 인덱스를 매개값으로 갖는 메소드들이 많다.
- ArrayList와 LinkedList의 차이는 사용 방법이 아닌, 내부적 요소를 저장하는 방법이다.
1. Array List
// E에 지정된 타입의 객체만 저장
List<E> list = new ArrayList<E>();
// E에 지정된 타입의 객체만 저장
List<E> list = new ArrayList<>();
// 모든 타입의 객체를 저장
List list = new ArrayList();
- ArrayList는 List Collection Interface를 구현한 클래스다.
- 객체를 추가하면 내부 배열에 객체가 저장되며 인덱스로 객체를 관리한다.
- 제한 없이 객체를 추가할 수 있다.(설정한 저장 용량 크기가 넘으면 자동적으로 용량이 늘어난다.)
- 데이터에 순서가 있으며 중복이 허용된다.
- 순서(인덱스)를 유지하기 위해 제거나 추가를 하면 전체 객체가 이동하여 객체 삭제와 삽입이 빈번하게 일어나는 곳에서 ArrayList는 사용하지 않고 LinkedList를 사용하는 것이 좋다.
예제 코드
더보기
package ch15.sec00;
import java.util.ArrayList;
import java.util.List;
public class List02 {
public static void main(String[] args) {
List<String> list1 = new ArrayList<>(); // 빈 리스트 생성
// element(요소, 원소, 아이텡) 추가
list1.add("java");
list1.add("spring");
list1.add("react");
list1.add("css");
list1.add("spring");
System.out.println("list1 = " + list1); // [java, spring, react, css, spring]
// element 읽기(얻기 get)
String str1 = list1.get(2);
String str2 = list1.get(4);
System.out.println("str1 = " + str1); // react
System.out.println("str2 = " + str2); // spring
// 검색(contains)
System.out.println("list1.contains(\"spring\") = " + list1.contains("spring")); // true
System.out.println("list1.contains(\"html\") = " + list1.contains("html")); // false
// 삭제(remove)
// 지우면 true, 못 지우면 false
list1.remove("java");
list1.remove("html");
list1.remove("spring");
System.out.println("list1 = " + list1); // [react, css, spring]
// 전체 탐색
// for
System.out.println("For");
for (int i = 0; i < list1.size(); i++) {
System.out.println("list1.get(i) = " + list1.get(i));
}
/*
* list1.get(i) = react
* list1.get(i) = css
* list1.get(i) = spring
*/
// 향상된 for
System.out.println("향상된 For");
for (String item : list1) {
System.out.println("item = " + item);
}
// forEach & lambda
System.out.println("forEach &' lambda");
list1.forEach(System.out::println);
}
}
💡 List 와 Array List의 차이
2. Linked List
// E에 지정된 타입의 객체만 저장
List<E> list = new LinkedList<E>();
// E에 지정된 타입의 객체만 저장
List<E> list = new LinkedList<>();
// 모든 타입의 객체를 저장
List list = new LinkedList();
- ArrayList와 사용 방법은 동일하지만 내부 구조가 다르다.
- 저장된 요소가 비순차적으로 분포되며, 요소들 사이를 링크(link)로 연결하여 구성한다.
- 특정 위치에 객체를 삽입 또는 삭제하면 바로 앞뒤 링크만 변경하고 나머지 링크는 변경되지 않는다.
- 빈번한 객체 삭제와 삽입이 일어나는 곳에서는 ArrayList 보다 좋은 성능을 발휘한다.
3. Nested List
예제 코드 1
예제 코드 2
728x90
'IT > Java' 카테고리의 다른 글
[Java] 코드의 실행 시간 측정 (0) | 2024.03.29 |
---|---|
[Java] Set Collection (1) | 2024.03.27 |
[Java] Collection Framework (0) | 2024.03.21 |
[Java] 제네릭 Generic (0) | 2024.03.20 |
[Java] 정규 표현식(Regular Expression) (0) | 2024.03.18 |