컬렉션 자료 구조

Korangii·2024년 8월 3일

Java

목록 보기
24/24
post-thumbnail

List

  • 순서를 유지하고 객체의 번지를 저장
  • 중복 저장 가능
  • null 저장 가능
  • 객체를 인덱스로 관리 : 인덱스로 객체 검색 / 삭제 가능
    • 내부 배열에 객체 저장
    • 제한없이 객체 추가 가능
  • ArrayList
    • 인덱스 0번부터 차례대로 저장
    • 인덱스 객체 제거 및 추가 시, 1씩 당겨지거나 밀어짐
    • 수정에 용이하지 않음
List<E> list = new ArrayList<E>(); // E에 지정된 타입의 객체만 저장
List<E> list = new ArrayList<>(); // E에 지정된 타입의 객체만 저장
List list = new ArrayList(); // 모든 타입의 객체를 저장
  • LinkedList
    • 인접 객체를 체인처럼 연결해서 관리
    • 바로 앞뒤 링크만 변경하면 되므로 ArrayList보다 좋은 성능 발휘
    • 수정에 용이
List<E> list = new LinkedList<E>(); // E에 지정된 타입의 객체만 저장
List<E> list = new LinkedList<>(); // E에 지정된 타입의 객체만 저장
List list = new LinkedList(); // 모든 타입의 객체를 저장

Set

  • 순서를 유지하지 않고 저장
  • 중복 저장 안됨
  • 하나의 null만 저장 가능
  • 수학의 집합과 유사한 개념
  • 인덱스로 관리하지 않기 때문에 인덱스를 매개값으로 갖는 메소드가 없다.
    • => 객체를 한 개씩 반복해서 가져와야 함
    • for문 사용
Set<E> set = new HashSet<>();
for(E e : set) {
	...
}
  • iterator() 메소드로 반복자를 얻어 객체를 하나씩 가져오는 것
Set<E> set = new HashSet<>();
Iterator<E> iterator = set.iterator();
  • HashSet
    • 동일한 객체(=동등 객체)는 중복 저장하지 않는다.
    • 중복 저장 X : 다른 객체라도 hashCode() 메소드의 리턴값이 같고, equls() 메소드가 true를 리턴하면 동일한 객체라고 판단하여 중복 저장하지 않는다.
Set<E> set = new HashSet<E>(); // E에 지정된 타입의 객체만 저장
Set<E> set = new HashSet<>(); // E에 지정된 타입의 객체만 저장
Set set = new HashSet(); // 모든 타입의 객체를 저장

Map

  • 키(Key)와 값(Value)으로 구성된 엔트리(entry) 객체를 저장
  • 키는 중복 저장 안됨
  • 값은 중복 저장 가능
  • 기존에 저장된 키와 동일한 키로 값을 저장할 경우 : 기존 값은 없어지고 새로운 값으로 대치된다.
  • HashMap
  • 키를 매개값으로 갖는 메소드
  • K는 key 타입, V는 value 타입
  • 중복 저장 X : 키로 사용할 객체가 hashCode() 메소드의 리턴값이 같고, equals() 메소드가 true를 리턴할 경우, 동일 키로 보고 중복 저장을 허용하지 않는다.
Map<String, Integer> map = new HashMap<String, Integer>(); // E에 지정된 타입의 객체만 저장
Map<String, Integer> map = new HashMap<>(); // E에 지정된 타입의 객체만 저장
Map map = new HashSet(); // 생성은 가능하나, 안 쓰임
profile
https://honeypeach.tistory.com/ 로 이전했습니다.

0개의 댓글