[자료구조] 자바 Collection 총 정리(자료구조, Iterator, Iterable, Comparator, Comparable)
·
Java/Collection
컬렉션#Abstract/Java/Collection 인터페이스/List 자료 구조/ArrayList - 배열 리스트/연결리스트 - LinkedList/자바 List 인터페이스/자바 ArrayList/자바 LinkedList/Set/해시 알고리즘/자바의 hashCode()/자바 Set 인터페이스/Map 인터페이스/Stack - 사용 금지/Queue 인터페이스/Deque 인터페이스/Deque와 Stack, Queue/순회/Iterable, Iterator/자바가 제공하는 Iterable, Iterator/정렬 - Comparable, Comparator/컬렉션 유틸/Collection 인터페이스 정리Collection 인터페이스Collection 인터페이스는 java.util 패키지의 컬렉션 프레임워크의 핵..
[Java] 32. Set
·
Java/Collection
Set#Java자바가 제공하는 Set1 - HashSet, LinkedHashSet자바의 Set 인터페이스는 java.util 패키지의 컬렉션 프레임워크에 속하는 인터페이스 중 하나이다. Set 인터페이스는 중복을 허용하지 않는 유일한 요소의 집합을 나타낸다. 그러다보니, 특정 요소가 집합에 있는지 여부를 확인하는데 최적화되어 있다.Set 인터페이스는 HashSet , LinkedHashSet , TreeSet 등의 여러 구현 클래스를 가지고 있으며, 각 클래스는 Set 인터페이스를 구현하며 각각의 특성을 가지고 있다.주요 메서드add(E e) 지정된 요소를 세트에 추가한다(이미 존재하는 경우 추가하지 않음).addAll(Collection c) 지정된 컬렉션의 모든 요소를 세트에 추가한다.contain..
[Java] 31. HashSet
·
Java/Collection
HashSet#Java이전 챕터에 처음 정의했던 Set의 성능을 해시 알고리즘을 통해 평균 O(1)으로 개선해보자.MyHashSetV1단순히 해시 인덱스를 다음과 같은 방법으로 구한다.public class MyHashSetV1 { static final int DEFAULT_INITIAL_CAPACITY = 16; LinkedList[] buckets; private int size = 0; private int capacity = DEFAULT_INITIAL_CAPACITY; public MyHashSetV1() { initBuckets(); } public MyHashSetV1(int capacity) { this.capacity = capacity; initBuckets(); } privat..
[Java] 30. Hash
·
Java/Collection
Hash#JavaSet이란?세트(셋)는 유일한 요소들의 컬렉션특징중복된 요소가 존재하지 않음순서를 보장하지 않는다.빠른 검색: 요소의 유무를 빠르게 확인할 수 있도록 최적화되어 있다.용도: 중복을 허용하지 않고, 요소의 유무만 중요한 경우에 사용예시:List: 장바구니 목록, 순서가 중요한 일련의 이벤트 목록.Set: 회원 ID 집합, 고유한 항목의 집합.셋 직접 구현하기단순히 배열에다가 추가하는 방식을 생각해보자.메서드add(value) : 셋에 중복된 값이 있는지 체크하고, 중복된 값이 있으면 false 를 반환한다. 중복된 값이 없으면 값을 저장하고 true 를 반환한다.contains(value) : 셋에 값이 있는지 확인한다. 값이 있으면 true 를 반환하고, 값이 없으면 false 를 반환한..
[Java] 29. 컬렉션- ArrayList, LinkedList, List
·
Java/Collection
컬렉션- ArrayList, LinkedList, List#JavaC 스타일 배열데이터 조회배열의 인덱스 사용: O(1)배열의 순차 검색: O(n)데이터 추가배열의 첫번째 위치에 추가배열의 첫번째 위치를 찾는데는 인덱스를 사용하므로 O(1)이 걸린다.모든 데이터를 배열의 크기만큼 한 칸씩 이동해야 한다. 따라서 O(n) 만큼의 연산이 걸린다.O(1 + n) O(n)이 된다.배열의 중간 위치에 추가배열의 위치를 찾는데는 O(1)이 걸린다.index의 오른쪽에 있는 데이터를 모두 한 칸씩 이동해야 한다. 따라서 평균 연산은 O(n/2)이 된다.O(1 + n/2) O(n)이 된다.배열의 마지막 위치에 추가이 경우 배열이 이동하지 않고 배열의 길이를 사용하면 마지막 인덱스에 바로 접근할 수 있으므로 한번..
[Java] 28. 제네릭 - Generic(2)
·
Java/Collection
제네릭 - Generic(2)#Java정리저번 챕터처럼 크게 제네릭 타입, 타입 매개변수를 이용하여 코드를 개선하는 예제를 봐보자.package generic.ex3;public class AnimalHospitalV2 { private T animal; public void set(T animal) { this.animal = animal; } public void checkup() { // T의 타입을 메서드를 정의하는 시점에는 알 수 없다. Object의 기능만 사용 가능 animal.toString(); animal.equals(null); // 컴파일 오류 //System.out.println("동물..
[Java] 27. 제네릭 - Generic(1)
·
Java/Collection
제네릭 - Generic(1)#Java정리제네릭이 필요한 이유코드 재사용을 늘리기 위해 Object와 다형성을 사용하면 타입 안전성이 떨어지는 문제가 발생한다.각각의 타입별로 IntegerBox, StringBox와 같은 클래스를 모두 정의코드 재사용X타입 안전성OObjectBox를 사용해서 다형성으로 하나의 클래스만 정의코드 재사용O타입 안전성X제네릭 적용제네릭을 사용하면 코드 재사용과 타입 안전성이라는 두 마리 토끼를 한 번에 잡을 수 있다.예시package generic.ex1;public class GenericBox { private T value; public void set(T value) { this.value = value; } public T get()..