
컬렉션(Collections) : 데이터 군, 데이터 군집, 자료
ex) 배열...
프레임워크(Framework) : 표준화된 설계
데이터 군을 다루는데 필요한 클래스를 표준화서 설계
참고)
- 프레임워크 : 개발 방식의 틀을 정해 놓은 것
ex) 스프링 웹 MVC 프레임워크
- 라이브러리 : 편의 기능을 모은 것

Interface Collection<E>
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html

참고) 컬렉션 프레임워크의 주요 작업
C (Create) : 데이터 추가
R (Read) : 데이터 조회
U (Update) : 데이터 변경
D (Delete) : 데이터 삭제

참고)
Interface List<E>
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html
boolean add(E e)boolean add(int index, E e)boolean addAll(Collection<? extends E>...)boolean addAll(int index, Collection...)E get(int index)int indexOf(Object e)int lastindexOf(Object e)boolean contains(Object e)boolean containsAll(Collection<?>..)E set(int index, E e)E remove(int index)boolean remove(Object e)boolean removeAll(Collection...)int size()void clear()retainAll(Collection..)static <E> of(E...)Object[] toArray()<T> T[] toArray(T[] a)
예시) Object[] toArray()

예시) <T> T[] toArray(T[] a)



ㄴ 추가
ㄴ 순서가 있는 반복
-> for문
-> size() : 요소의 갯수

ㄴ 조회

ㄴ 순서유지

ㄴ 삭제
ㄴ 음? 왜 다 삭제가 안됬지??

ㄴ 배열의 특징 : 순서(위치)가 바뀔 때 마다 새로운 배열이 만들어짐
ㄴ 매번 위치가 바뀔 때 마다 새로운 배열이 생성되기 때문에 완전히 삭제되지 않음
ㄴ 어떻게 완벽히 삭제하지?


ㄴ 역순으로 하면 순서 안바뀌어서 새로운 배열 생성도 안됨
ㄴ 마지막에 추가한걸 가장 먼저 제거 -> 스택
ㄴ 문제 해결
예시) 기본 생성 배열 갯수 10, 공간의 갯수가 부족하면 -> 배열이 2배 크기로 새로 생성

ㄴ 배열 공간의 갯수(기본 10개)

ㄴ 최초의 배열공간 갯수 설정

ㄴ 공간이 부족하네? 기존 배열 버리고 2배 크기로 새로 배열 생성하자
boolean offer(E e) : 끝에 요소 추가E poll() : 앞에서 요소 꺼내기boolean offerFirst(E e) : 요소 앞에 추가boolean offerLast(E e) : 요소 끝에 추가E pollFirst() : 가장 앞에 요소를 꺼내기E pollLast() : 가장 뒤의 요소 꺼내기


ㄴ 다형성
예시) 큐인터페이스의 구현체

참고) 자바문서
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/LinkedList.html
① E pop() : 끝 요소 꺼내기
② E push(E e) : 끝에 추가

참고) 자료, 자료구조
- 자료 : 데이터 군, Collection
- 자료구조 : 자료를 어떻게 처리할 것인지 방법적인 부분을 정의한 것
- 순차 자료구조(List)
- 스택 자료구조
- 큐 자료구조
- 집합(Set)
- 사전(Map)
equals() and hashCode()
참고)
A 집합 : 2, 3, 1, 4, 5
B 집합 : 8, 9, 4, 5, 6, 7
A 와 B의 합집합? 1, 2, 3, 4, 5, 6, 7, 8
-> A 집합, B 집합 모두 4, 5가 있지만 중복되지 않게 나온다
참고) 자바문서
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html
boolean add(E e)boolean addAll(Collection..)boolean remove(Object e)boolean removeAll(Collection...)int size()void clear()boolean contains(Object e)boolean containsAll(Collection<?>..)boolean retainAll(Collection<?>..)
참고) 자바문서
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html
V put(K key, V value)void putAll(Map...)
ㄴ 순서는 보장이 안됨
V putIfAbsent(K key, V value)V get(Object key)
V getOrDefault(Object key, V defaultValue)
Set<Map.Entry<K,V>> entrySet()참고) entries = 키 벨루 쌍

V put(K key, V value)
ㄴ put : 없으면 추가 있으면 수정
V replace(K key, V value)
boolean replace(K key, V oldValue, V newValueV remove(Object key)
boolean remove(Object key, Object value)int size()Set<K> keySet()
Collection<V> values()
boolean containsKey(Object key)boolean contains(Object value)

↓

E pop() : 끝 요소 꺼내기E push(E e) : 끝에 추가boolean offer(E e) : 끝에 요소 추가E poll() : 앞에서 요소 꺼내기Iterator <E> iterator()boolean hasNext() : 다음 요소가 있는지 체크E next() : 다음 커서로 이동 요소를 조회
-> 어짜피 반복은 처음부터 끝까지 조회가 많다!
-> 향상된for문

기준
- 기준이 필요한 이유? 애매하니까
ex) 책이름, 책번호, 책저자 -> 어떤걸 기준으로 정렬하지? -> 애매함 -> 기준을 정해주자
- 집합 : HashSet, TreeSet - 중복 제거 기준
-> equals() and hashCode()
- 정렬 : TreeSet - 기본 정렬 기준 (Natural Order)
-> java.lang.Comparable
-> int compareTo(T o)
참고) 자바문서
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html
참고)
Unsigned : 양수
byte : -128 ~ 127
Unsignedbyte : 0 ~ 255


ㄴ asList는 수정불가

ㄴ 수정하고 싶을 시 새롭게 만들고 매개변수로 대입하여 새로운 List형태로 수정


ㄴ 난 값을 원해




ㄴ 좋은 방식은 아님, 보여줄려고 이렇게 한 것


ㄴ 오름차순
ㄴ 내림차순으로 해보자 = 역으로 해보자
ㄴ Comparator : 래퍼클래스 형태로 해줘야함
참고) 자바문서
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collections.html




ㄴ 요소를 섞어놨어도 정렬하고 나서 가장 처음, 마지막 요소를 가져오기 때문에 값이 변하지x





