Dorothy_YANG
With Dorothy
Dorothy_YANG
전체 방문자
오늘
어제
  • 분류 전체보기 (279)
    • Hi, I'm Dorothy 🕵️‍♂️ (21)
      • Slowly but Surely (18)
      • IT certifications (3)
    • 🤯TIL (80)
      • HTML & CSS (2)
      • Javascript & jQuery (13)
      • React (13)
      • C언어 (1)
      • JAVA (22)
      • Python (2)
      • Oracle SQL (10)
      • My SQL (5)
      • Spring (12)
    • 💻Programmers (17)
    • 🏫 Open API_JAVA (101)
    • 🌎 Project (10)
      • Shopping (10)
    • 💥 Error (24)
    • ⚙ Setting (23)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • 연습문제
  • SQL
  • spring
  • 콜라보레이토리
  • CSS
  • googlecolaboratory
  • Database
  • 노마드코더
  • SQLD합격후기
  • Javascript
  • 파이썬온라인
  • 창초기화
  • AllArgsConstructor
  • 기간쿼리
  • 시작일종료일
  • java
  • HTML
  • 오류해결
  • 백준
  • oracle
  • sql기간
  • 이것이자바다
  • 독학후기
  • 코딩앙마
  • 비쥬얼스튜디오코드
  • Eclipse
  • 서버등록
  • SQLD합격
  • colaboratory
  • 기간설정

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Dorothy_YANG

With Dorothy

[47일차] Set 컬렉션(HashSet) / Map 컬렉션(HashMap, Hashtable, Properties) / 검색 기능을 강화시킨 컬렉션 / LIFO와 FIFO 컬렉션
🏫 Open API_JAVA

[47일차] Set 컬렉션(HashSet) / Map 컬렉션(HashMap, Hashtable, Properties) / 검색 기능을 강화시킨 컬렉션 / LIFO와 FIFO 컬렉션

2022. 9. 29. 19:33
728x90

20220928(수)

  • 목차 
    - Set 컬렉션(HashSet)
    - Map 컬렉션(HashMap, Hashtable, Properties)
    - 검색 기능을 강화시킨 컬렉션 
    - LIFO와 FIFO 컬렉션

< Set 컬렉션 >

  • Set 컬렉션
    - 저장 순서가 유지되지 않음(List와 반대!) 😮
    - 객체를 중복 저장 불가
    - 하나의 null만 저장 가능

  • list / set / map 중 어떤 걸 사용해야 할까?
    판단 필요 ➡ 예제를 거치면 판단가능!

  • Set 인터페이스의 메소드
기능 메소드 설명
객체 추가 boolean add(E e) 주어진 객체를 저장, 객체가 성공적으로 저장되면 true 리턴,
중복 객체면 false 리턴
객체 검색 boolean contains(Object o) 주어진 객체가 저장되어 있는지 여부
boolean isEmpty() 컬렉션이 비어 있는지 조사
Iterator<E> iterator() 저장된 객체를 한 번씩 가져오는 반복자 리턴
int size() 저장되어 있는 전체 객체 수 리턴
객체 삭제 void clear() 저장된 모든 객체를 삭제
boolean remove(Object o) 주어진 객체를 삭제

 

  • set 컬렉션
HashSet Set<E> set = new HashSet<E>();
동일 객체 및 동등 객체는 중복저장하지 않음
hashCode()리턴 값이 같으면 equals()리턴값 확인함

 


< Map 컬렉션 > - 멀티 타입

  • 특징
    - 키(key)와 값(value)으로 구성된 Map.Entry 객체를 저장하는 구조
    - 키와 값은 모두 객체
    - 키는 중복될 수 없지만 값은 중복 저장 가능

  • Map 인터페이스의 메소드
기능 메소드 설명
객체 추가 V put(K ket, V value) 주어진 키로 값을 저장. 새로운 키일 경우 null 리턴
동일한 키가 잇을 경우 값을 대체하고 이전 값을 리턴
객체 검색 boolean containsKey(Object key) 주어진 키가 있는지 여부
boolean containsValue(Object value) 주어진 값이 있는지 여부
Set<Map.Entry<K, V>> entrySet() 키와 값이 쌍으로 구성된 모든 Map.Entry 객체를 Set에 담아 리턴
V get(Object key) 주어진 키가 있는 값을 리턴
boolean is Empty() 컬렉션이 비어 잇는지 여부
Set<K> keySet() 모든 키를 Set객체에 담아서 리턴
int size() 저장된 키의 총 수를 리턴
Collection<V> values() 저장된 모든 값을 Collection에 담아서 리턴
객체 삭제 void clear() 모든 Map.Entry(키와 값)를 삭제
V remove(Object key) 주어진 키와 일치하는 Map.Entry를 삭제하고 값을 리턴

 

  • 구현 클래스
HashMap Map<K, V> map = new HashMap<K, V>();
- 키 객체는 hashCode()와 equals()를 재정의해 동등 객체가 될 조건을 정해야 함
- 키 타입은 String 많이 사용
Hashtable Map<K, V> map = new Hashtable<K, V>();
- 키 객체 만드는 법은 HashMap과 동일
- 스레드 동기화(synchronization)가 된 상태
: 복수의 스레드가 동시에 Hashtable에 접근해서 객체를 추가, 삭제 하더라도 스레드에 안전
Properties  
- 키와 값을 String 타입으로 제한한 Map 컬렉션
- Properties 는 프로퍼티(~.properties) 파일을 읽어 들일 때 주로 사용

 


< 검색 기능을 강화시킨 컬렉션 >

  • 아래 두 컬렉션들은 이진 트리를 이용해서 계층적 구조(Tree 구조)를 가지면서 객체를 저장한다.
Set 컬렉션 Map 컬렉션
TreeSet TreeMap
이진 트리(binary tree)를 기반으로 한 Set  컬렉션
왼쪽과 오른쪽 자식 노드를 참조위한 두 개의 변수로 구성
이진 트리(binary tree) 를 기반으로 한 Map  컬렉션
키와 값이 저장된 Map.Entry를 저장
왼쪽과 오른쪽 자식 노드를 참조위한 두 개의 변수로 구성
특정 객체를 찾는 메소드: first(), last(), lower(), higher(), …
정렬 메소드: descendingIterator(), descendingSet()
범위 검색 메소드: headSet(), tailSet, subSet()
단일 노드 객체를 찾는 메소드: firstEntry(), lastEntry(), lowerEntry(), higherEntry(), …
정렬 메소드: descendingKeySet(), descendingMap()
범위 검색 메소드: headMap(), tailMap, subMap()

 


< LIFO와 FIFO 컬렉션 > - 사고를 단순하게!!

  • 자료구조
    : 기억장소에서 데이터를 관리하는 방식
    변수 : 단일값,
    배열 : 동일한 데이터들을 하나의 이름으로 관리. 크기고정,
    컬렉션 : 제네릭 지원. 동적기억장소가 확장. 다양한 자료구조 존재
Stack 클래스 (LIFO : 후입선출) Queue 인터페이스 (FIFO : 선입선출)
후입선출(LIFO: Last In First Out) 구조
응용 예: JVM 스택 메모리
선입선출(FIFO: First In First Out)
응용 예: 작업 큐, 메시지 큐, …
구현 클래스: LinkedList
- push(E item) : 주어진 객체를 스택에 넣는다.
- peek() : 스택의 맨 위 객체를 가져옴. 객체를 스택에서 제거 X
- pop() : 스택의 맨 위 객체를 가져옴. 객체를 스택에거 제거.
- offer(E e) : 주어진 객체를 넣는다.
- peek() : 객체 하나를 가져옴. 객체를 큐에서 제거 X.
- poll() : 객체 하나를 가져옴. 객체를 큐에서 제거.

 

728x90
저작자표시 (새창열림)

'🏫 Open API_JAVA' 카테고리의 다른 글

[49일차] 람다식 기본 문법 / 타겟 타입과 함수적 인터페이스 / 표준 API의 함수적 인터페이스  (0) 2022.10.03
[48일차] 제네릭 타입 / 멀티 타입 파라미터 / 제네릭 메소드 / 제한된 타입 파라미터 / 와일드카드 타입 / 제네릭 타입의 상속과 구현  (0) 2022.09.29
[46일차] 스레드 그룹 / 스레드풀 / 컬렉션 프레임워크 / List 컬렉션  (0) 2022.09.28
[45일차] 동기화 메소드와 동기화 블록 / 스레드 상태 / 스레드 상태 제어 / 데몬 스레드  (0) 2022.09.27
[44일차] 멀티 스레드 개념 / 작업 스레드 생성과 실행 / 스레드 우선순위  (0) 2022.09.26
    '🏫 Open API_JAVA' 카테고리의 다른 글
    • [49일차] 람다식 기본 문법 / 타겟 타입과 함수적 인터페이스 / 표준 API의 함수적 인터페이스
    • [48일차] 제네릭 타입 / 멀티 타입 파라미터 / 제네릭 메소드 / 제한된 타입 파라미터 / 와일드카드 타입 / 제네릭 타입의 상속과 구현
    • [46일차] 스레드 그룹 / 스레드풀 / 컬렉션 프레임워크 / List 컬렉션
    • [45일차] 동기화 메소드와 동기화 블록 / 스레드 상태 / 스레드 상태 제어 / 데몬 스레드
    Dorothy_YANG
    Dorothy_YANG
    Slowly but Surely, 비전공 문과생의 개발공부

    티스토리툴바