🔍 List 계열
- 인덱스 번호를 사용하여 저장 순서가 유지된다
- 데이터의 중복이 허용된다
- 배열과 유사하나, 배열과 달리 저장 공간이 자동으로 확장된다
- List 계열의 구현체 클래스 : ArrayList, Vector, LinkedList 등
- 기본적은 메서드들이 대부분 Set 계열과 동일하다 (부모가 동일하기 때문이다)
🔍 ArrayList vs Vector
- 기본적인 구조가 동일하며, 메서드가 동일하다.
- ArrayList와 Vector가 다른 점은 Vector의 경우 멀티쓰레드 환경에서 안전하게 객체르르 사용할 수 있다!
=> ArrayList는 멀티쓰레드 환경을 지원하지 않는다.
🔍 ArrayList vs LinkedList
- 기본적인 구조가 완전 다르며, 메서드는 동일하다.
- ArrayList는 배열 구조로써 인덱스를 활용하므로 데이터 탐색이나 "순차적인" 추가 / 삭제가 빠르다
- LinkedList는 다음 데이터의 위치를 현재 데이터가 갖고 있는 형태이며
항상 시작점부터 순차적으로 다음 데이터를 추적해가는 형식의 구조
=> 중간 데이터 추가/삭제는 빠르지만, 데이터 탐색이나 순차적인 작업은 느리다.
✍ List 객체 생성 후 요소 저장하기
public static void main(String[] args) {
List list = new ArrayList(); // list 객체 생성
// 요소 추가
list.add("abcde");
list.add(2);
list.add(100);
System.out.println("list 객체가 비어있는가? " + list.isEmpty());
System.out.println("list 객체에 저장된 요소의 갯수는? " + list.size());
System.out.println("list 객체의 모든 요소 출력 : " + list);
}
💻
Set 계열의 메서드와 거의 동일하다.
✍ List 객체의 모든 요소 꺼내기
일반 for문과 향상된 for문으로 배열처럼 모든 요소를 출력할 수 있다.
for(int i=0; i<list.size(); i++) { // 일반 for문
System.out.print(list.get(i) + " ");
}
for(Object o : list) { // 향상된 for문
System.out.print(o + " ");
}
💻
✍ 기존 인덱스를 밀어내고 새로운 요소 삽입이 가능하다
list.add(2, 3);
2번 인덱스를 밀어내고 정수 3을 삽입한다.
System.out.println("밀어내기 전 2번 인덱스 : " + list.get(2));
System.out.println("밀어내기 전 list의 전체 요소 : " + list);
list.add(2, 3); // 2번 인덱스 밀어내고 정수 3 삽입
System.out.println("------------------------------------------------");
System.out.println("밀어내기 후 2번 인덱스 : " + list.get(2));
System.out.println("밀어내기 후 list의 전체 요소 : " + list);
💻
'개발 > Java' 카테고리의 다른 글
[Java] Generic - 제네릭 (0) | 2023.03.09 |
---|---|
[Java] Collection - Map (0) | 2023.03.07 |
[Java] Collection Framework - Set (0) | 2023.03.04 |
[Java] Object (0) | 2023.03.04 |
[Java] Builder 패턴 (0) | 2023.03.04 |