Java

[Java] 컬렉션

Dev_Fuji 2024. 6. 11. 21:10

컬렉션

  • 자료구조를 바탕으로 객체들을 효율적으로 추가, 삭제, 검색할 수있도록 관련된 인터페이스와 클래스들을 util에 포함
  • 이를 컬렉션 프레임워크라고 부른다.
  • List와 Set은 객체를 추가, 삭제, 검색하는 방법에 있어서 공통점이 있어 공통 메소드를 모아 Collection 인터페이스를 정의 및 상속
  • Map은 key,value를 한쌍으로 묶어서 관리
인터페이스 구분 특징 구현 클래스
Collection List 순서를 유지하고 저장
중복저장 가능
ArrayList, Vector, LinkedList
Set 순서 유지 X
중복 저장 가능
HashSet,TreeSet
Map 키는 중복이 안 됨
키와 값을 같이 저장
HashMap, HashTable

 

List

  • 객체를 인덱스로 관리
  • 객체를 저장하면 인덱스 부여 , 인덱스로 검색 삭제기능 제공
기능 메소드 설명
객체 추가 add(E e) 주어진 객체를 맨 끝에 추가
add(int index, E e) 주어진 객체를 인덱스에 추가
객체검색 contains(E e) 객체가 있는지 확인, 없으면 -1
get(int index) index에 저장된 객체를 리턴
int size() 전체 객체의 수 리턴
객체삭제 remove(int index) 주어진 객체를 삭제

 

ArrayList

  • 크기 제한 없이 객체 추가 가능
  • null 및 중복 저장 가능
  • 삭제와 삽입이 많은 곳에서는 좋지 않다.
    => 삭제,삽입 할 때마다 인덱스가 변경되므로 성능 저하

LinkedList

  • 인접 객체를 체인처럼 연결해서 관리
  • 삭제와 삽입이 많은 곳에서는 좋다.
    => 앞,뒤 링크만 변경하면 됨

Set

  • 저장순서를 유지하지 않는다.
  • 중복 저장이 불가능하다.
기능 메소드 설명
객체 추가 boolean add(E e) 저장에 성공하면  true, 실패는 false
객체검색 boolean contains(Object O) 객체가 저장된 여부를 확인
  isEmpty() 컬렉션이 비어있는지 확인
  iterator<E> iterator 지정된 객체를 한 번씩 가져오는 반복자
  int size() 저장되어 있는 전체 객체 수 리턴
객체 삭제 void clear  객체 모두 삭제
  boolean remove(Object o) 주어진 객체를 삭제

 

HashSet

  • 동일한 객체를 중복 저장하지 않는다.
    => hashCode() 리턴값 true && equals() 리턴값 true => 저장X

HashMap

  • Key: Value의 구조를 가진다.
  • HashMap<String,Object> 구조를 가장 많이 가진다.
  • 트리 구조로 되어있어 입력한 순서대로 출력되지 않는다.
Iterator<String> it = hashMap.keySet().iterator();
while (it2.hasNext()) {
    String key = it2.next();
    System.out.println(key + ":" + hashMap1.get(key));
}
TreeMap<String,Object> tree = new TreeMap<>(hashmap); //TreeMap을 통한 정렬, 무거움
Iterator<String> it = tree.descendingKeySet().iterator();
//keySet(): 오름정렬keySet
//descendingKeySet():내림정렬keySet
while (it.hasNext()) {
    String key = it.next();
    System.out.println(key + ":" + hashMap.get(key));
}