[TIL-Java] 컬렉션 프레임워크

이용준·2022년 11월 10일
0

TIL

목록 보기
4/21

1.컬렉션 프레임워크

  • 컬렉션 : 여러 데이터 집합
  • 특정 자료 구조에 데이터를 추가/삭제/수정/검색 등 동작을 수행하는데 편리한 메서드 제공
  • 주요 인터페이스로 List, Set, Map을 제공
  • List와 Set은 공통점이 많으므로 Collection 인터페이스로 묶임

1-1.List

  • 데이터 순서 유지 및 중복 저장 가능
  • 객체 저장시 인덱스 부여
  • 인터페이스 구현 : ArrayList, Vector, Stack, LinkedList

1) ArrayList

ArrayList<타입 매개변수> 객체명 = new ArrayList<타입 매개변수>(저장용량); // 저장 용량은 변동 가능


ArrayList<String> arrayList = new ArrayList<>();
// 데이터 추가
arrayList.add("Java");

// 인덱스 0번 출력
arrayList.get(0);
// 인덱스 0번 삭제
arrayList.remove(0);
  • 객체가 인덱스로 관리된다.
  • 저장 용량 유동적
  • 데이터가 연속적으로 존재
  • 인덱스 객체 제거시 바로 뒤부터 마지막까지 1씩 앞당겨짐
    • 객체 삭제 및 삽입 빈번한 곳은 LinkedList 권장됨

강점)

  • 데이터 순차적으로 추가/삭제하는 경우
  • 데이터 읽어오는 경우 인덱스 통한 데이터 접근 가능해 신속한 검색
  • 데이터 갯수 변하지 않는 경우

단점)

  • 중간에 데이터 추가 및 중간 데이터 삭제하는 경우 데이터 이동이 많으므로 속도 저하

2) LinkedList

Arraylist<String> linked = new LinkedList<>();
  • 데이터 이동위해 복사할 필요 없으므로 처리속도 빠름(배열도 이와 같음)

강점)

  • 중간에 위치한 데이터 추가/삭제하는 경우
  • 데이터 잦은 변경

단점)

  • 검색에 있어 ArrayList에 비해 느림


1-2.Iterator

  • 컬렉션에 저장된 요소 순차적으로 읽어옴(순회)
ArrayList<String> list = ...
Iterator<String> iterator = list.iterator(); // list 객체 순회

while(iterator.hasNext()){// 읽어올 객체가 있다면 (true)
  String str = iterator.next(); // next() 통해 다음 객체 읽어오기

iterator 메서드

  • hasNext()
    • 읽을 객체 있으면 true return, else false
  • next()
    • 컬렉션에서 하나의 객체 읽어오기
  • remove()
    • next()통해 읽어온 객체 삭제

1-3.Set

  • 수학의 집합
  • 데이터 순서 유지 및 중복 저장 불가
  • 인터페이스 구현 : HashSet, TreeSet

1) HashSet

Hashset<String> lang = new HashSet<String>();
  • 중복 값 불허 및 저장 순서 유지하지 않음

2) TreeSet

TreeSet<String> employees = new TreeSet<>();
  • 기본 정렬 방식 : 오름차순

  • 하나의 부모에 최대 두 개의 자식 노드 연결되는 이진트리의 일종

  • 최상위 노드를 루트라 한다.

  • (왼쪽 자식 < 부모,루트 || 오른쪽 자식 > 부모,루트)의 특징


1-4.Map

  • key-value 형식으로 데이터 저장
  • 순서 유지 및 키(key) 중복 저장 불가
  • 값(value)은 중복 저장 가능
  • 인터페이스 구현 : HashMap, HashTable, TreeMap, SortedMap 등
  • 키와 값으로 구성된 객체를 Entry 객체라 한다.
  • 대량의 데이터 검색에 효과적

HashMap 생성

<HashMap<String, integer> hashmap = new HashMap<>();
  • HashMap 생성 / 객체 찾기 / Key set 생성 등
public class HashMapSample{
  public static void main(String[] args){
    
    //HashMap 생성
    HashMap<String, Integer> map = new HashMap<>();
    
    //Entry 객체 저장
    map.put("아메리카노",2000);
    map.put("카페라떼",3000);
    
    //객체 찾기
    System.out.println("아메리카노 : ", map.get("아메리카노"));
    //Key set 생성
    Set<String> KeySet = map.keySet();
    
    //value 읽어오기
    Iterator<String> keyIterator = keySet.Iterator();
    while(keyIterator.hasNext()){
      String key = keyIterator.next();
      Integer value = map.get(key);
      System.out.println(key + " " +value);
    }
    
    // 객체 삭제
    map.remove("아메리카노");
    // 객체 전체 삭제
    map.clear();
profile
뚝딱뚝딱

0개의 댓글