본문 바로가기
Memo/BootCamp : TIL

[Day 23] Java - 컬렉션(Collection) Ⅱ

by 달의 조각 2022. 7. 15.

학습 주제

 

컬렉션 프레임워크(Collection Framework)

 


 

2021.12.30 - [Back-End/Java] - 컬렉션 프레임웍

 

컬렉션 프레임웍

이 글은 남궁성 님의 Java의 정석 책을 바탕으로 정리한 글입니다. 인터페이스 인터페이스 특징 Collection List 순서 유지 O, 중복 O 구현 클래스: ArrayList, LinkedList, Stack, Vector Set 순서 유지 X, 중..

cookiee.tistory.com

 

List : 중복 O, 순서 유지 O

ArrayList: 검색, 요소 순차적 추가와 삭제 | 중간에 추가하거나 삭제하는 건 성능에 좋지 않음
LinkedList: 값 + 다음 요소 주소 저장, 검색할 때 앞에서부터 검사함(인덱스가 아니라서), 중간에 추가하거나 삭제할 때 참조값만 바꾸면 돼서 효율적임

 

Set : 중복 X, 순서 유지 X

HashSet: HashCode()와 equals()를 사용하여 데이터 중복을 검사함
TreeSet: 루트 노드부터 시작해서 왼쪽은 작은 값, 오른쪽은 큰 값으로 정렬을 해 줌

 

Map : Key 중복 X, Value 중복 O, 순서 유지 X

HashMap: 해싱 과정(Hash Function)으로 메모리 주소가 나오면 거기에 Value 넣음

 

Iterator: for문과 유사한데 while문을 사용한다 + hasNext() + next()

Set<Map, Entry<그대로 적기>> entrySet = hashMap.entrySet();

 

새롭게 배운 내용

 

System.nanoTime() : 지금 시간을 나노 초로!!
Collections: 컬렉션을 사용할 때 유용한 메서드들이 있다! 배열의 Arrays 같은 느낌

Map에서 값은 Set이 아닌 컬렉션으로 담는데, 그 이유는 중복을 허용하기 때문이다

 

 

보강할 내용

 

Map과 Iterator의 활용에 대해 완벽하게 이해하기

 

 

회고

 

오늘은 페어와 함께 컬렉션 코플릿 문제를 푸는 데에 시간을 보냈다. 컬렉션의 내용들이 헷갈려서 List, Set, Map의 특징과 메서드의 활용을 여러 번 코드로 작성해 가며 공부해 놓았더니 코플릿 문제들이 어렵게 느껴지지 않았다. 페어 분과도 합이 잘 맞아서 오전에 대부분의 문제를 풀 수 있었다.

저번 회고에서도 정리했지만 기초 이론들도 물론 중요하지만 내가 직접 코드로 작성하며 눈과 손에 로직을 익히는 것이 학습에 많이 도움이 된다. 예전에 컬렉션에 대해 공부할 때는 각각의 메서드들을 이론적으로 다 머릿속에 넣으려고 했었다. 그런데 막상 문제를 풀어 보니 그 많은 메서드들이 다 쓰이지도 않고, 자주 사용하는 것들과 겹치는 부분들이 많아서 복잡하게 느껴지지 않았다. 이전의 공부 방법이 비효율적이라는 생각이 든다.

부트캠프에 들어온 후에 1일 1커밋을 하고 싶어서 알고리즘 문제를 꾸준히 풀고 있다. 한 달 전만 해도 나는 알고리즘 공부를 꾸준히 하겠다 마음 먹을 줄은 몰랐다. 문제가 조금만 길어져도 어려워 보여서 더 거리가 느껴졌었다. 🙄 아직은 정말 간단한 로직들의 문제들만 풀고 있지만 계속해서 연습하다 보면 로직의 성능을 따져 가며 코드를 작성할 수 있게 되지 않을까 기대가 된다! 😊

 

 

★★★★★

댓글