List 이론 정리
List 컬랙션은 객체를 일려로 늘어놓은 구조를 가지고 있다.
객체를 인덱스로 관리하기 때문에 객체를 저장하면 자동 인덱스가 부여되고 인덱스로 객체를 검색, 삭제 할 수 있는 기능을 제공
List 컬랙션은 객체 자체를 저장하는 것이 아니라 객체의 번지를 참고한다.
동일한 객체를 저장할 수 있는데 이 경우에는 동일한 번지를 참고 한다.
또한 null도 저장이 가능이 경우 해당 Index는 객체를 참고 하지않는다.
List 컬랙션에는 대표적 3가지
- ArrayList
- Vector
- LinkedList
1. ArrayList
arrayList는 List 인터페이스의 구현 클래스로 ArrayList에 객체를 추가하면 객체가 인덱스로 관리 된다.
일반 배열과 ArrayList는 Index로 객체를 관리한다는 점에서는 유사하지만 큰 차이점을 가지고 있다.
배열은 생성할 떄 크기가 고정되고 사용 중에 크기를 변경할 수 없다.
ArrayList는 저장 용량을 초과한 객체들이 들어오면 자동적으로 저장용량이 늘어난다.
String형 저장하는 ArrayList는 밑과 같이 생성할 수 있다.
List<String> list = new ArrayList<String>();
기본 생성자는 ArrayList 객체를 생성하면 내부에 10개의 객체를 저장할 수 있는 초기 용량을 가지게 된다.
저장되는 객체 수가 늘어나면 용량이 자동으로 증가한다.
만약에 처음부터 용량을 크게 잡게 싶다면 용량의 크기를 매개값으로 받는 생성자를 이용하면 된다.
List<String> list = new ArrayList<String>(30);
★중요★
ArrayList에 객체를 추가하면 인덱스 0부터 차례대로 저장된다.
특정 인덱스의 객체를 제거하면 바로 뒤 인덱스부터 마지막 인덱스까지 모두 앞으로 1씩 밀려난다.
마찬가지로 특정 인덱스에 객체를 삽입하면 해당 인덱스부터 마지막 인덱스까지 모두 1씩 밀려난다.
package Part15_프레임워크.ArrayList;
import java.util.ArrayList;
import java.util.List;
public class ArrayListExample {
public static void main(String[] args){
List<String> list = new ArrayList<>();
list.add("Java");
list.add("JDBC");
list.add("Servlet/JSP");
list.add("2, DataBase");
list.add("iBATIS");
int size = list.size(); // 저장된 총 객체 수 얻기
System.out.println("총 객체수 > " +size);
System.out.println();
String skill = list.get(2);
System.out.println("2 > " +skill);
System.out.println();
for(int i=0; i<list.size(); i++){
String str = list.get(i);
System.out.println(i + " : " +str);
}
System.out.println();
list.remove(2);
list.remove(2);
list.remove("iBATIS");
for(int i=0; i<list.size(); i++){
String str = list.get(i);
System.out.println(i + " : " +str);
}
}
}
2. Arrays.asList(T... a)
고정된 객체들로 구성된 List를 생성할때 사용한다.
List<T> list = Arrays.asList(T... a);
- 개발을 하다보면 배열을 리스트로 바꾸어야 할 때가 있다.
- java.util에는 Arrays 클래스가 존재한다.
- Arrays.asList는 배열을 리스트로 반환해 준다.
'개발 > Java collection framework' 카테고리의 다른 글
[Java] LIFO와 FIFO 컬랙션 (0) | 2021.06.15 |
---|---|
[Java] Map 컬랙션 (0) | 2021.06.15 |
[JAVA] Set 컬랙션 (0) | 2021.06.15 |
[Java] 컬렉션 프레임 워크란 (0) | 2021.06.11 |