JAVA/복습(10)
-
Collections 유틸
Collections 는 자료구조를 다룰 때 여러 유용한 기능을 제공한다. max(), mix() 이라던가 저장 순서에 관여하는 sort()나,랜덤하게 바꿔주는 shuffle() 이라던가 등의 다양한 기능을 제공한다. of()List, Set, Map 과 같은 자료 구조에는 of() 생성자가 있다.List.of(자료1, 자료2, 자료3);Set.of(자료1, 자료2, 자료3);Map.of(자료1, 자료2, 자료3);of() 를 통해 생성된 자료구조는 '불변성'을 띈다.따라서, of() 메서드의 인자로 처음 값을 넣어 생성한 뒤로는 변경되지 않는다. 불변 자료구조가 필요할 때 적극 활용하자. 가변 자료구조가 필요하다면?자료구조 구현체의 생성자를 호출할 때 인자값으로 of()를 통해 만들어진 자료구조를 넘겨..
2024.08.03 -
정렬 - Comparatable, Comparator
순회에 Iteratable 과 Iterator 인터페이스가 있다면,정렬에는 Comparatable, Comparator 인터페이스가 있다. Comparatablepublic interface Comparable { public int compareTo(T o);}Comparatable은 말 그대로 '비교 가능한(비교 가능하게 해주는)' 인터페이스 이다.compareTo(T o); 메서드를 통해 자기 자신과 타겟의 값을 비교한다. 배열을 사용한 자료 구조에서,Arrays.sort() 메서드 사용 시, 자료구조에 담긴 객체들을 비교하여 정렬해준다.정렬된 순서는 1회용이 아니며, GC 처리될 때까지 유지된다. Collections.sort()배열을 보다, 쉽게 사용할 수 있게 해주는 Collection ..
2024.08.02 -
순회 - Iterable, Iterator
지금까지 List, Set, Map, Queue, Stack 등을 학습 했다.어떤 구현체는 배열, 어떤 구현체는 Node를 자료 저장소로 쓰기에접근 방식 또한 다르다. 데이터를 순회함에 있어, 사용자는 자료 순회만 할 수 있으면 된다.기능은 이미 구현 돼 있다. Iterable 인터페이스public interface Iterable{ Iterator iterator();}자료구조, Integer 등의 일부 래퍼클래스에는 Iteratable 이 구현 돼 있다.Iteratable 인터페이스는 해당 자료구조가 갖는 자료 저장소를 품은 Iterator 을 반환한다. Iterator 인터페이스그리고 이 Iterator는 hasNext(), next() 로 하여금 자료구조에 저장된 다음 데이터를 찾고 이동할 수 있..
2024.08.02 -
Map
Map 을 쌍으로 저장하는 자료 구조 순서 보장 - x중복 - key : 불가- value : 가능 key값을 통해 빠르게 검색이 가능하다. 구현체- Hashmap - LinkedHashMap- TreeMap 등 - Key 중복 시 값 덮어씌워짐put(Key, Value); put(key= 10, value = 100);put(key= 10, value = 1515); 아래와 같이 동일한 key 값으로 서로 다른 값을 넣을 경우,덮어쓰기 되어 key 10의 value 는 1515 가 된다. - HashMap 사용 시 Hashcode(), equals() 구현 필수HashMap 사용 시 Key 값으로 사용될 객체는 Hashcode(), equals() 가 꼭 구현 돼야 함.hash 알고리즘이 사용되는 만..
2024.08.02 -
Set 인터페이스
SetSet은 List와 같이 Collection의 인터페이스를 상속하는 인터페이스이다.중복을 허용하지 않고,순서를 보장하지 해주지 않는다. (TreeSet, LinkedHashSet 은 순서 보장이 가능하다) 종류HashSetTreeSet 등이 있다. HashSet- Hash 알고리즘을 적극적으로 활용한다.ㄴ 따라서, 주요 연산 처리에 빠르다[ O(1) ]. - 파생체로 LinkedHashSet 가 있다.- 순서 보장 필요 없고, 단일성만 띌 집합 자료모음을 다룰 때 유리하다. TreeSet- 트리 구조를 띄고 있다.- 트리 노드는 left, right 노드를 갖는다.ㄴ 특정 데이터 조회에 O(log2) 의 성능을 갖는다.- 좌, 우로 데이터를 추가하기 위한 기준이 필요하다.ㄴ 따라서, TreeSet ..
2024.08.01 -
Set - HashSet
Set 이란특징List와는 다르게, 중복을 허용하지 않고, 순서를 보장하지 않는 자료구조임.데이터를 담는 자료 구조로서 '배열'을 사용함. 한계입력 성능이 구림기존에 저장된 값 중 중복값이 있다면, 추가적으로 배열에 저장되지 않음.즉. 기존에 있던 모든 값들과 대조(탐색)해야 하기 때문에 O(n) 의 구린 성능을 자랑함.. 극복Hash 알고리즘 채택. Hash 알고리즘이란?자료의 클래스, 필드 정보들을 섞어 공식을 통해 Hash화(숫자) 하여, 이를 인덱스로 활용하는 알고리즘이다. 자료를 해쉬화하여 array[hashIndex] 에 접근. O(1)배열의 해당 위치에 동일한 자료가 있는지 확인 O(n).여기서 탐색에 O(n)이 발생하게 되지만, 중복되는 일이 그렇게 많지 않아 전체 탐색 수(n)이 크지 ..
2024.07.31