Collection - List

Zino·2022년 12월 28일

Java

목록 보기
23/26
post-thumbnail

List

  • 자료들을 순차적으로 나열한 자료구조로 인덱스로 관리되며, 중복해서 객체 저장 가능
    구현 클래스로 ArrayList와 Vector, LinkedList가 있음


List 계열 주요 메소드

  • List.add(Object e) : 리스트에 객체를 추가
    매개변수 타입이 Object == 모든 객체를 매개변수로 전달 할 수 있다.
    (매개변수 Object == 최상위 부모 참조 변수 == 다형성 적용 가능)
//ex) 
studentList.add(new Student());
  • List.get(index i) : 리스트에서 i번째 인덱스에 있는 객체(Object)를 반환
//ex)
System.out.println(studentList.get(0).toString());
  • int List.size()
    List에 저장된 데이터 개수를 얻어오는 방법 :
    -> 배열명.length 대신 사용

  • boolean List.isEmpty()
    List가 비어있는지 확인하는 방법!
    : 비어있으면 true 반환

//ex)
studentList.isEmpty()
  • List.set(int index, Student e)
    List의 index요소를 전달받은 e로 변경
    -> 반환값 Student == 변경 전 Student 객체가 담겨있음
//ex)
studentList.set(index, new Student(name, age, region, gender, score));
  • List.remove(int index)
    리스트에서 index번째 요소 제거
    이때, 제거된 요소가 반환된다
    List는 중간에 비어있는 인덱스가 없게 하기 위해서
    rrmove() 동작 시 뒤쪽 요소를 한칸씩 당겨온다.
studentList.remove(index);

ArrayList

(검색)조회 효율성

  • 대표적인 List의 후손으로 초기 저장 용량은 10으로 자동 설정되며(List 크기가 늘었다 줄었다 하기 때문에 큰 의미가 없음 ) 따로 지정도 가능
    저장 용량을 초과한 객체들이 들어오면 자동으로 늘어나며 고정도 가능
    동기화(Synchronized)를 제공하지 않음

  • ArrayList(용량) : 용량 만큼의 리스트 생성, 너무 큰 값을 작성하면 메모리를 많이 소모함.

//ex)
List studentList = new ArrayList();
private List<Student> studentList = new ArrayList<Student>();
// Student로 저장되는 타입이 제한된 리스트 생성


Vector

  • List의 후손으로 ArrayList와 동등하지만 동기화(Synchronized)를 제공한다는 점이 ArrayList와 차이점
  • List 객체들 중에서 가장 성능이 좋지 않음

LinkedList

  • List의 후손으로, 인접 참조를 링크해 체인처럼 관리
  • 특정 인덱스에서 객체를 제거하거나 추가하게 되면 바로 앞/뒤 링크만 변경하면 되기 때문 에 객체 삭제와 삽입이 빈번하게 일어나는 곳에서는 ArrayList보다 성능이 좋음

Comparable, Comparator


Collections.sort()

  • Collections.sort(List<T> list) T객체에 Comparable을 상속받아 compareTo 메소드 재정의를 통해 정렬 구현 (단 한 개의 정렬)

  • Collections.sort(List<T> list, Comparator<T> c) 지정한 Comparator클래스에 의한 정렬 (여러 개의 정렬)

profile
Willingness to be a fool!

0개의 댓글