Cute Running Puppy

Language/[Java] 혼자 공부하는 자바

[#혼공챌린지] 혼자 공부하는 자바_5주차 기본미션

R.silver 2021. 8. 8. 17:17
반응형

#혼공단 #혼공챌린지 #혼공자

https://hongong.hanbit.co.kr/%ed%98%bc%ea%b3%b5-%ea%b2%8c%ec%8b%9c%ed%8c%90/?uid=27&mod=document&pageid=1

 

[#혼공챌린지] 혼공 학습단 6기 도서별 미션과 커리큘럼

안녕하세요, 한빛미디어 혼공단을 운영하는 🧙🏻‍♀️혼공족장🧙🏻‍♀️입니다. #혼공챌린지 혼공학습단 6기와 "혼자 공부하는"시리즈에 관심을 주셔서 감사합니다 🥳 딱 6주만 같이 때

hongong.hanbit.co.kr


혼공 챌린지_자바 5주차 기본 미션

chapter 13. 직접 정리한 키워드 정리 공유


13-1. 컬렉션 프레임 워크

컬렉션 프레임 워크

널리 알려진 자료구조를 활용하여 객체들을 효율적으로 활용할 수 있도록 인터페이스와 구현 클래스를 제공하는 기능

-> java.util 패키지에서 제공한다. 

컬렉션 (collection)

객체의 저장

프레임 워크

사용 방법을 정해놓은 라이브러리 

 

List 컬렉션

  • 객체를 인덱스로 관리 (배열과 유사)
  • 저장 용량이 자동 증가 (배열과의 차이점)
  • 추가, 삭제, 검색 등을 위한 다양한 메소드 제공 
  • 객체 자체를 저장하는 것이 아니라 객체의 번지를 참조하는 것 
  • 동일 객체 중복 저장 가능 (동일한 번지 참조)
  • null 저장시 해당 인덱스는 객체를 참조하지 않음 
  • ArrayLsit, Vector, LinkedList 등이 존재
List 컬렉션에서 공통적으로 사용 가능한 List  인터페이스의 메소드 

 

기능  메소드  설명 
객체 추가 boolean add(E e) 주어진 객체를 맨 끝에 추가
void add(int index, E element) 주어진 인덱스에 객체 추가
E set((int index, E element) 주어진 인덱스에 저장된 객체를 주어진 객체로 바꿈  
객체 검색 boolean contains(Object o) 주어진 객체가 저장되어 있는지 조사
E get(int index) 주어진 인덱스에 저장된 객체를 리턴
boolean isEmpty() 컬렉션이 비어 있는지 확인
int size() 저장되어 있는 전체 객체 수를 리턴
객체 삭제 void clear() 저장된 모든 객체를 삭제
E remove(int index) 주어진 인덱스에 저장된 객체를 삭제
boolean remove(Object o) 주어진 객체를 삭제

E: 저장되는 객체의 타입을 List 컬렉션을 생성할 때 결정하라는 의미

ArrayList

List 인터페이스의 대표적인 구현 클래스

기본적으로 10개의 객체를 저장할 수 있는 초기 용량을 가지고 저장 객체가 늘어나면 자동으로 용량이 증가한다.

List<E> list = new ArrayList<E>();

 

//String을 저장하는 ArrayList 객체 생성
List<String> list = new ArrayList<String>();
List<String> list = new ArrayList<>();

 

  • 인덱스를 사용하여 객체를 찾거나 맨 마지막에 객체 추가할 때 사용하면 좋다. 
  • 저장된 객체 수가 많고, 특정 인덱스에 객체를 추가, 저장하는 일이 많다면 LInkedList를 사용하는 것이 좋다.

Vector

ArrayList와 동일한 내부구조를 가지고 있다. 

저장할 객체 타입을 타입 파라미터로 표기한 뒤 기본 생성자를 호출하면 Vector 객체가 생성된다. 

 

List<E> list = new Vector<E>();
List<E> list = new Vector<>();

 

스레드가 동시에 Vector 메소드를 실행 할 수 없기에 멀티 스레드 환경에서 안전하게 객체를 추가, 삭제할 수 있다. 

LinkedList

ArrayList와 사용 방법은 같지만 내부 구조는 완전히 다르다. 

LinkedList는 인접 참조를 링크하여 체인처럼 관리한다. 

저장할 객체 타입을 타입 파라미터에 표기하고 기본 생성자를 호출하면 LinkedList가 생성된다. 

 

List<E> list = new LinkedList<E();
List<E> list = new LinkedList<>();

 

ArrayList VS LinkedList

 

구분 순차적으로 추가, 삭제 중간에 추가, 삭제 검색
ArrayList 빠르다 느리다 빠르다
LinkedList 느리다  빠르다 느리다

Set 컬렉션

  • List 컬렉션과 달리 저장 순서가 유지되지 않음
  • 객체 중복 저장 불가
  • 하나의 null만 저장 가능 
  • 수학의 집합과 유사 (순서 상관없고 중복 없음)
  • HashSet, LinkedHasgSet, TreeSet 등이 존재
Set 컬렉션에서 공통적으로 사용 가능한 Set 인터페이스의 메소드

 

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

HashSet

Set 인터페이스의 구현 클래스 

Set<E> set = new HashSet<E>();

 

set<String> set = new HashSet<String>();
Set<String> set = new HashSet<>();

 

  • 객체들을 순서 없이 저장하고, 중복된 객체는 하나만 저장한다. 
  • 동일한 객체가 반드시 같은 인스턴스를 의미하는 것은 아니다.
  • 객체를 저장하기 전 객체의 hashCode() 메소드를 호출하여 해시코드를 얻은 뒤 기존에 저장된 객체들의 해쉬코드를 비교하여 중복된 개체인지 확인한다. (동일한 해쉬코드가 있다면 equals() 메소드를 호출하여 두 객체를 비교한다.)

Map 컬렉션

  • 키와 값으로 구성된 Map.Entry 객체를 저장하는 구조를 가지고 있다. 
    • Entry는 인터페이스 내부에 선언된 중첩 인터페이스이다.
    • 키와 객체는 모두 객체이다. 
    • 키는 중복 저장 가능, 값은 중복 저장 불가 
  • HashMap, Hashtable, LinkedHashMap, Properties, TreeMap 등이 존재 
Set 컬렉션에서 공통적으로 사용 가능한 Set 인터페이스의 메소드

 

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

K, V는 저장되는 키와 객체의 타입을 Map 컬렉션을 생성할 때 결정하라는 의미 

HashMap

Map 인터페이스를 구현한 대표적인 Map 컬렉션 

HashMap의 키로 사용할 객체는 hashcode() 와 equals() 메소드를 재정의하여 동등 객체가 될 조건을 정해야 한다. 

(객체가 달라도 동등 객체라면 같은 키로 간주하여 중복 저장되지 않도록 하기 위해서)

 

Map<K, V> map = new HashMap<k, V>();

 

Map<String, Integer> map = new HashMap<String, Integer>();
Map<String, Integer> map = new HashMap<>();

Hashtable

hashmap과 동일한 내부 구조를 가지고 있다. 

Hashtable의 키로 사용할 객체는 hashcode() 와 equals() 메소드를 재정의하여 동등 객체가 될 조건을 정해야 한다. 

동기화된 메소드로 구성되어 있어 멀티 스레드가 동시에 Hashtable의 메소드를 실행할 수 없다. 

 

Map<K, V> map = new Hashtable<k, V>();

 

Map<String, Integer> map = new Hashtable<String, Integer>();
Map<String, Integer> map = new Hashtable<>();

 


5주차 선택 미션

https://spongerice.tistory.com/121

 

[#혼공챌린지] 혼자 공부하는 자바_5주차 선택미션

#혼공단 #혼공챌린지 #혼공자 https://hongong.hanbit.co.kr/%ed%98%bc%ea%b3%b5-%ea%b2%8c%ec%8b%9c%ed%8c%90/?uid=27&mod=document&pageid=1 [#혼공챌린지] 혼공 학습단 6기 도서별 미션과 커리큘럼 안녕하세요,..

spongerice.tistory.com

더보기

혼공학습단 6기 5주차 우수 혼공러로 선정이 되었습니다.

감사합니다. 

 

[#혼공챌린지] 혼공 학습단 6기 5주차 우수 혼공러 미션 내용 공유 – 혼자 공부하는 책 (hanbit.co.kr)

 

 

반응형