JAVA
TreeSet (1)
TreeSet (1)
2022.05.02TreeSet - 범위 탐색, 정렬 이진 탐색 트리 (binary search tree)로 구현, 범위 탐색과 정렬에 유리. 이진 트리는 모든 노드가 최대 2개의 하위노드를 갖음 각 요소(node)가 나무(tree)형태로 연결(LinkedList의 변형) TreeSet은 이진 탐색 트리(binary search tree)로 구현 되어있고, 범위 탐색(from~to)과 정렬에 유리하다. 이진트리(birary tree)는 하나의 노드가 최대 2개의 하위노드를 갖을 수 있다 노드하나를 TreeNode라고 부른다. 그래서 TreeNode 클래스에는 저장할 객체를 가지고 있고, 자신의 왼쪽과 오른쪽 자식을 각각 가리킬 수 있게 되어있다. TreeNode는 LinkedLIst와 비슷하다. LinkedList의 변형..
HashSet (2)
HashSet (2)
2022.05.02HashSet - 예제 HashSet은 객체를 저장하기전에 기존에 같은 객체가 있는지 확인 같은 객체가 없으면 저장하고, 있으면 저장하지 않는다. boolean add(Object o)는 저장할 객체의 equals()와 hashCode()를 호출 equals()와 hashCode()가 오버라이딩 되어 있어야 함 HashSet은 순서를 유지하지 않고, 중복을 허용하지 않는다. 그래서 HashSet과 같은 Set인터페이스를 구현한 클래스는 객체를 저장하기 전에 기존에 같은 객체가 있는지 확인한다. 그래야 중복된 것을 저장하지 않을 수 있기 때문이다. 그래서, Set에 객체를 저장하는 메서드 add(Object o)는 저장하기전에 객체의 equals()와 hashCode()를 호출해서 중복되는게 있는지 확인한..
HashSet (1)
HashSet (1)
2022.05.01HashSet - 순서X, 중복X HashSet은 Set인터페이스로 구현했다. 그래서, 순서를 유지하지않고, 중복도 허용하지 않는다. Set인터페이스로 구현된 클래스는, HashSet과 TreeSet이 대표적이다. HashSet Set인터페이스를 구현한 대표적인 컬렉션 클래스 순서를 유지하려면, LinkedHashSet클래스를 사용하면 된다. Set이 필요할때는, 가장 일반적인 HashSet을 사용하면 된다. 그런데 만약, 순서를 유지하려면, LinkedHashSet클래스를 사용하면 된다. TreeSet 범위 검색과 정렬에 유리한 컬렉션 클래스 HashSet보다 데이터 추가, 삭제에 시간이 더 걸림 TreeSet은 범위검색 from~to 검색과 정렬에 유리한 컬렉션 클래스다. TreeSet은 데이터가 많..
Comparator와 Comparable
Comparator와 Comparable
2022.05.01Comparator와 Comparable 객체 정렬에 필요한 메서드(정렬기준 제공)를 정의하 인터페이스 Comparator와 Comparable은 객체 정렬에 필요한 메서드(정렬기준 제공)를 정의한 인터페이스다. 이름이 비슷한데, Comparable은 기본정렬기준을 구현하는데 사용한다. 즉 default정렬기준을 제공할 때사용하고, 그외에는 Comparator을 사용하는데, 기본 정렬기준 외에 다른 기준으로 정렬하고자할 때 사용한다. Comparator는 compare(Object o1, Object o2)라는 메서드를 가지고 있는데, o1과 o2값을 비교해서 어느쪽이 더 큰지를 정수값으로 반환한다. 만약 반환값이 0이면 o1과 o2가 같은 것이다. 그리고, 반환값이 양수면 왼쪽이 큰것이고, 반환값이 음..
Arrays
Arrays
2022.04.30Arrays - 배열을 다루기 편리한 메서드(static) 제공 Arrays클래스는 배열을 다루는데 편리한 메서드를 제공한다. Arrays클래스가 제공하는 메서드는 모두 static이다. 비슷한 예시로는 Math, Objects, Collections클래스등이 있다. 1. 배열의 출력 - toString() toString()은 매개변수로 배열을 넣어주면, 배열의 내용을 문자열로 반환한다. 그리고 여러가지 배열타입으로 오버로딩 되어있다. 2. 배열의 복사 - copyOf(), copyOfRange() 배열 복사하는 것은 System 클래스에 있는 arraycopy()라는 메서드가 있는데, 이런식으로 사용한다. 일단 System.arraycopy() 메서드는 이런거구나 하고 넘어가자.(차이는 나중에 다른 ..
Iterator, Enumeration, Map과 Iterator
Iterator, Enumeration, Map과 Iterator
2022.04.29Iterator, ListIterator, Enumeration 컬렉션에 저장된 데이터를 접근하는데 사용되는 인터페이스 Enumeration은 Iterator의 구버젼 ListIterator는 Iterator의 접근성을 향상시킨 것 (단방향 → 양방향) Iterator, ListIterator, Enumeration은 전부 인터페이스다. 어떤 인터페이스냐면, 컬렉션에 저장된 데이터를 읽어올 때사용하는 인터페이스다. 그래서 이러한 메서드가 있는데,핵심은 hasNext(), next() 이게 핵심이다. hasNext()는 읽어올 요소가 남아있는지 확인하고, 있으면 true, 없으면 false를 반환한다. 보통 next()를 호출하기 전에 hasNext()를 호출해서 읽어올 요소가 있는지 확인할때 사용한다. ..