본문 바로가기

전체 글

자바의 정석 - 11.11 TreeMap 11.11.1 TreeMap 이진 검색 트리의 형태로 키와 값의 쌍으로 이루어진 데이터를 저장함 검색과 정렬에 적합한 컬렉션 클래스임 더보기
자바의 정석 - 11.10 HashMap과 Hashtable 11.10.1 HashMap과 Hashtable Hashtable보다 새로운 버전인 HashMap을 사용할 것을 추천함 키(key)와 해싱(hashing)을 동시에 사용하기 때문에 검색에 뛰어난 성능을 보임 💡 해싱이란 해시함수(Hash Function)를 이용해서 데이터를 해시테이블(Hash Table)에 저장하고 검색하는 기법임 equals()로 비교한 결과가 true임과 동시에 hashCode()의 반환 값이 같아야 같은 객체로 인식함 더보기
자바의 정석 - 11.9 TreeSet 11.9.1 TreeSet 이진 검색 트리(Binary Search Tree) 자료구조 형태로 데이터를 저장하는 컬렉션 클래스임 Set을 구현했기 때문에, 중복된 데이터의 저장을 허용하지 않으며 정렬된 위치제 저장하므로 저장순서를 유지하지 않음 11.9.2 이진 검색 트리란? 모든 노드는 최대 두 개의 자식노드를 가질 수 있음 왼쪽 자식노드의 값은 부모노드의 값보다 작고 오른쪽 자식노드의 값은 부모노드의 값보다 커야함 노드의 추가 삭제에 시간이 걸림(순차적으로 저장하지 않고 조건에 맞게 삽입 및 삭제를 하므로) 검색(범위검색)과 정렬에 유리함 중복된 값을 저장하지 못함 더보기
자바의 정석 - 11.8 HashSet 11.8.1 HashSet 저장된 순서를 유지하지 않음 💡 저장순서를 유지하고 싶으면 LinkedHashSet을 사용해야 함 중복된 요소를 저장하지 않음 equals()로 비교한 결과가 true임과 동시에 hashCode()의 반환 값이 같아야 같은 객체로 인식함 더보기
자바의 정석 - 11.7 Comparator와 Comparable 11.7.1 Comparator와 Comparable Array.sort()는 Character클래스의 Comparable의 구현에 의해 정렬되는 것임 Comparator와 Comparable은 모두 인터페이스로 컬렉션을 정렬하는데 필요한 메소드를 정의하고 있음 public interface Comparator{ int compare(Object o1, Object o2); boolean equals(Object obj); } public interface Comparable{ public int compareTo(Object o); } Comparable은 기본 정렬 기준을 구현하는데 사용함 Comparator는 기본 정렬기준 외에 다른 기준으로 정렬하고자 할 때 사용함 더보기
자바의 정석 - 11.6 Arrays 11.6.1 Arrays 배열을 다루는데 유용한 메소드가 정의되어 있음 배열의 복사 - copyOf, copyOfRange() 배열 채우기 - fill(), setAll() 배열의 정렬과 검색 - sort(), binarySearch() 배열의 비교와 출력 - equals(), toString() 💡 다차원 배열에는 deepEquals()나 deepToString()을 사용함 배열을 List로 변환 - asList(Object… a) parallelXXX(), spliterator(), stream() 더보기
자바의 정석 - 11.5 Iterator, ListIterator, Enumeration 11.5.1 Iterator 컬렉션 프레임웍에서 컬렉션에 저장된 요소를 읽어오는 방법을 표준화 했음 컬렉션에 저장된 각 요소에 접근하는 기능을 가진 Iterator인터페이스를 정의하고, Collection인터페이스에는 Iterator를 반환하는 iterator()를 정의함 public interface Iterator{ boolean hasNext(); Object next(); void remove(); } public interface Collection{ ... public Iterator iterator(); ... } 주로 while문을 사용해 컬렉션 클래스를 읽음 Collection c = new ArrayList(); Iterator it = c.iterator(); while(it.hasN.. 더보기
자바의 정석 - 11.4 LinkedList 11.3.1 LinkedList 배열은 두 가지 단점이 있음 크기를 변경할 수 없음 비순차적인 데이터의 추가 또는 삭제에 시간이 많이 걸림 💡 배열의 중간에 데이터를 추가하려면, 빈자리를 만들기 위해 다른 데이터를 복사해서 이동해야 하기 때문임 이 배열의 단점을 보완하기 위해 LinkedList가 만들어졌음 배열은 모든 데이터가 연속적으로 존재하지만, LinkedList는 불연속적으로 존재하는 데이터를 서로 연결(link)한 형태로 구성되어 있음 💡 불연속적으로 위치한 각 요소들이 서로 연결된 구조이기 때문에 처음부터 n번째 데이터까지 차례로 따라가야만 원하는 값을 얻을 수 있음 기본적인 LinkedList는 이동방향이 단방향이기 때문에 다음 요소에 접근은 쉽지만, 이전 요소에 대한 접근이 어려움 때문에.. 더보기