개발/Java collection framework

[Java] List 컬랙션

두리두리안 2021. 6. 11. 10:57

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는 배열을 리스트로 반환해 준다.