용어/java

[국비][JAVA] list 이해하기

줌인. 2024. 6. 8. 13:22

▶ 컬렉션 프레임웍 이해하기

https://zoooom-in.tistory.com/123

 

[국비][JAVA] 컬렉션 프레임웍의 큰 틀 이해하기

▶ java.util package 참고하기https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/package-summary.html java.util (Java SE 11 & JDK 11 ) docs.oracle.com [컬렉션 프레임워크 상속 계층도]인터페이스특징List- 순서

zoooom-in.tistory.com

 

 

항목 ArrayList LinkedList 공통점
선언 new ArrayList<>() new LinkedList<>() 선언시 배열 크기 지정 불필요
데이터 구조 동적 배열 이중 연결 리스트 Collection 프레임워크의 List 인터페이스
데이터 접근 속도 빠름 느림 데이터 저장 순서 유지
데이터 추가/삭제 속도 느림 빠름 null 값 허용
메모리 사용 효율성 상대적으로 적음 상대적으로 많음 generic 타입 지원
기본 연산 인덱스를 통한 빠른 검색 노드를 통한 순차적 접근 Iterator을 통한 순회 지원

 

 

[List 인터페이스 도식화]

 

 

ArrayList 배열안에는 객체(object)만 담을 수 있음
따라서 배열 내부를 호출할 때도 객체의 상위값인 Object가 나옴을 명심

 

 

[ArrayList 코드 예시 1]

public static void main(String[] args) {
    ArrayList ar = new ArrayList(); //배열의 크기를 저장하지 않아도 됨
    int num = 2;
    String name = "winter";
    ar.add(name);
    ar.add(num); //각자 다른 데이터 타입도 넣을 수 있음
    //다만 int같은 경우는 Integer로 오토박싱되어서 들어감(객체 타입만 들어갈 수 있기에)
    ar.add('a');
    ar.add(false);
    ar.add(num);
    ar.add(1, "test");
    ar.add(0, 'c');
    ar.remove(0);
    ar.remove(2);
    ar.clear();

    for (int i=0; i < ar.size();i++) { //length를 사용하지 않고, size - 데이터의 개수를 파악
        System.out.println(ar.get(i)); //특이하게 get을 통해서 어떤 값이 들어있는지 확인이 가능
    }
}

 

[ArrayList 코드 예시 2]

public static void main(String[] args) {
    ArrayList ar = new ArrayList();
    ar.add("first");
    ar.add(2);
    ar.add('c');
    ar.add(true); //여러 타입이 들어갈 수 있음
    for(int i=0; i < ar.size();i++) {
        System.out.println(ar.get(i));;
    }
    String firsts = (String) ar.get(0);
    //들어갈 때 Object 배열로 들어갔기 떄문에 꺼낼 때도 Object 배열로 꺼내진다.
    //따라서 만약 String type그대로를 사용하고 싶다면 다형성의 원칙을 기억하자.
}

 

728x90