[Java] Collection

양정훈·2022년 6월 16일
0

Arrays

Arrays.asList()

  • 배열을 리스트로 반환한다
  • 리스트를 변경하면 배열도 변경된다
  • 요소의 변경이 불가하다 (add, remove)
  • 컬렉션을 받는 메소드에 배열을 넘길때... 사용된다

List

ArrayList

  • 배열과 다르게, 저장되는 데이터의 개수에 따라 자동적으로 크기가 변경된다
  • 인덱스로 원소에 접근할 때 좋은 성능을 보인다
  • 원소를 추가/삭제할 때 성능이 좋지 않다
ArrayList<Integer> list = new ArrayList<Integer>();

list.add(1); // list = {1}
list.add(2); // list = {1, 2}
list.add(3); // list = {1, 2, 3}

list.set(0, 4); // list = {4, 2, 3}
list.remove(1); // list = {4, 3}
list.get(0); // 4
list.size(); // 2

list.indexOf(4); // 0
list.add(4); // list = {4, 3, 4}
list.lastIndexOf(4); // 2

LinkedList

  • 원소의 추가/삭제에 좋은 성능을 보인다
  • 인덱스로 원소에 접근할 때 성능이 좋지 않다

Vector

Map

  • key-value

HashMap

Map<Integer, String> map = new Map<Integer, String>();
map.put(10, "kim");
map.put(7266, "lee");

map.size(); // 2
map.containsKey(10); // true
map.isEmpty(); // false
map.get(10); // kim
map.remove(10);

TreeMap

LinkedHashMap

Set

  • 동일한 원소를 중복해서 가질 수 없다

HashSet

  • hash table을 사용한다
  • 원소들의 순서가 일정하지 않다

TreeSet

  • red-black tree를 사용한다
  • 값에 따라 순서가 결정된다
  • HashSet보다 느리다

LinkedHashSet

  • hash table + linked list 를 사용한다
  • 삽입된 순서대로 순서가 결정된다

Queue

Queue<Integer> queue = new Queue<Integer>();

// 원소 추가, offer() 를 사용하면 추가에 실패하면 Exception 대신 false 반환
queue.add(1);

// 원소 반환 후 삭제, poll() 을 사용하면 반환할 원소가 없는 경우 Exception 대신 null 반환
queue.remove();

// 원소 반환, peek() 을 사용하면 반환할 원소가 없는 경우 Exception 대신 null 반환
queue.element();

PriorityQueue

Iterator

ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);

Iterator e = list.iterator();

while (e.hasNext()) { // 아직 접근하지 않은 원소가 있는지
    System.out.println((String)e.next()) // 다음 원소 반환
    e.remove() // 최근 반환한 원소를 삭제
}

ListIterator

0개의 댓글