7. 25

바르고·2023년 7월 25일
0

collection


자료구조.
  - 데이터 값의 모임, 데이터 간의 관계
  - 데이터에 적용할 수 있는 함수나 명령
  
배열
  - 가장 기본적 자료 구조
  - homogeneous collection => 동일한 데이터 타입만 관리 가능.
  - Polymorphism
    - Object를 이용하면 모든 객체 참조 가능
    - 담기엔 편리, 빼낼 땐 Object로만 가져올 수 있음
    - 런타임에 실제 객체 타입 확인 후 사용.. 번거로움..
  - Generic을 이용한 타입 한정
    - 컴파일 타임에 검사해서 형변환 번거로움 제거.
    
Collection Framework
  - java.util 패키지
    - 다수의 데이터를 쉽게 처리하는 방법 제공 => DB처럼 CRUD 중요
    - Iterable => Collection => List, Set / Map

List
  - 입력 순서 O
  - 데이터 중복 O
  ex) ArrayList, LinkedList
  
Set
  - 입력 순서 X
  - 데이터 중복 X
  ex) HashSet, TreeSet

Map
  - key 와 value 쌍으로
  - 입력 순서 X
  - key 중복 X, value 중복 O
  ex) HashMap, TreeMap

-----

Collection interface
  - 추가
    - add(E e)
    - addAll(Collection<? extends E> c)
  - 조회
    - contains
    - containsAll
    - equals()
    - isEmpty()
    - iterator()
    - size()
  - 삭제
    - clear()
    - removeAll()
    - retainAll()
  - 수정
  - 기타
    - toArray()

-----

List

Vector는 구시대 유물

ArrayList, LinkedListQueue, Deque 정도 많이 씀.

'인덱스' 가 생겼음 => 특정 '위치'에 넣기 가능 
추가
  - add(int index, E element)
  - addAll(...)
조회
  - get(int index)
  - indexOf(Object o)
  - lastIndexOf(Object o)
  - listIterator()
삭제
  - remove(int index)
수정
  - set(int index, Element e)
기타
  - subList(int fromIndex, int toIndex)

indexOf()
  - 여러개가 있다면 그 중 첫번째 index
  - 없으면 -1

배열의 장점
  - 가장 기본적 자료구조로 간단, 사용이 쉬움.
  - 접근 속도가 빠름

배열의 단점
  - 크기 변경 못 해서 매번 삭제하고 다시 만들어야 함.
  - 비 순차적 데이터의 추가, 삭제에 많은 시간이 걸림.
  - ArrayList도 고대로 단점을 가져감.

-----

LinkedList
  - 각 요소를 Node로 정의하고 Node는 다음 요소의 참조 값과 데이터로 구성됨.



ArrayListLinkedList의 용도.
  - 특정 클래스의 용도에 적합하게.
  - 소량 데이터는 별 차이 없음
  - 정적인 데이터 활용, 조회는 ArrayList
  - 동적인 데이터 추가, 삭제가 많으면 LinkedList

// 뒤에 이름만 바꿔서 선언하면 OK.
List<String> friends = new ArrayList<>();
List<String> friends = new LinkedList<>();

자료 삭제 시 주의 사항.
  - for문에 size 사용 시 실시간으로 바뀔 수 있다.
    - 요소 삭제 시 마다 index 차감
    - 뒤에서 부터 접근.
  
  - forEach 문장은 Collection 크기가 불변해야 함.
    - ConcurentModificationException 에러 발생.

-----

Set

특징
  - 입력 순서 관리 X, 주머니에 구슬 넣듯이
  
equals(), hashcode() 재 정의
  - 같은 객체이려면 둘 다 만족 해야함..
  
-----

Map

key, value 모두 Object 형태

Hashtatle => 과거의 유산
HashMap, TreeMap 등등...

Map interface 주요 메소드.

.putIfAbsent()
.getOrDefault()

for(String key : hMap.keySet()){
	// key 출력
}

-----

정렬
  - 요소를 특정 기준에 대한 내림차순 또는 오름차순으로 배치 하는 것
  - 순서를 가지는 Collection들만 정렬 가능
    - List
    - Set
    _ Map 


Comparable
  - public int compareTo ...
  	



11시-14시

~ dp. 시뮬 // 취업코테
try.. suffixarray...
네카라쿠배 공무원..

-----

set
  - add 메서드 void가 아닌 boolean

sortedSet, sortedMap (List는 원래 sorted)

문자열 비교 시 해시코드 비교하면 빠름

public Comparator

이너 클래스는 $가 붙는다.

아우터 클래스는 생략하거나 public만 붙일 수...


잠와...

amaterasUML => class Diagram 시각화.
profile
바르고의 다락방

0개의 댓글