Java/혼공단

[혼공단10기] JAVA - 5주차

슈코 2023. 8. 8. 23:28

혼공단 5주차 - 다음 스텝은?

꿀맛같은 여름휴가가 끝나고 5주차가 시작되었다.

사실 꿀맛같다고 하기에는 스펙타클했는데, 해당 부분을 참고하면 좋을거 같다 https://suco.tistory.com/23

이제 다음주면 마지막이라니!

아쉬운 마음보다는 아주 조금의 뿌듯함과, 이 시간을 잘 써보고 싶은 생각이 든다

사실 혼공단을 시작할때, 이것을 시작으로 해서 2권정도 자바 공부를 더 하고 싶었다

 

혼자공부하는자바 - 모던 자바 인 액션 - 이펙티브자바

 

이번 혼공단을 통해서 자바의 기본기를 다시 한번 공부할 수 있었고

모던 자바 인 액션에서는 람다쪽 공부를 더 해보고 싶다

지금 회사에서는 WebFlux로 개발을 하고 있는데, 리액티브 프로그래밍은 함수형을 기본으로 사용하고 있기 때문에 더더욱 그랬다.

혼자공부하는자바에서는 람다식을 다루지 않았는데, 다음 스텝을 위해서는 오히려? 좋았다

기회가 된다면, 그 다음으로 이펙티브 자바로 더더욱 깊이를 더하는 시간을 가지고 싶다

5주차도 화이팅!

 

5주차 기본미션 - 직접 정리한 키워드 공유하기

 

List
  • 객체를 인덱스로 관리(객체 저장 시 자동 인덱스 부여)
  • 저장용량이 자동으로 증가
  • 반복문(향상된 for문)으로 List 자주 사용
  • ArrayList(순차적 추가/삭제 성능, 검색), Vector(스레드에 안전한), LinkedList(중간 추가/삭제 성능) 등
  • 편리하게 사용 가능하지만, 성능이 우수한것은 아니다
  • add : 특정 인덱스 혹은 맨 끝에 객체 추가
  • set : 인덱스에 저장된 객체를 바꾼다
  • get : 인덱스에 저장된 객체 리턴
  • isEmpty : 비어있는지 체크
  • size : 저장되어 있는 전체 객체 수 리턴
  • remove : 인덱스에 저장된 객체 삭제
  • clear : 저장된 모든 객체 삭제

 

Set
  • 순서를 유지하지 않는다
  • 중복 저장되지 않는다
  • 하나의 null만 저장 가능
  • iterator : 저장된 객체를 한번씩 가져오는 반복자 리턴

 

Map
  • key와 value로 구성됨
  • key는 중복 저장할 수 없다(중복 저장되는 MultiValueMap이 있긴함)
  • put : 주어진 키로 value를 저장함
  • entrySet : key/value 쌍으로 구성된 모든 Map.Entry 객체를 Set에 담아 리턴
  • get : 주어진 키가 있는 value를 리턴
  • keySet : 모든 key를 담아 리턴
  • values : 모든 value를 담아 리턴

 

5주차 선택미션 - P.573 [직접 해보는 손코딩] 코딩 과정 및 실행 결과 캡처하기

생성 - 저장 - 조회 - 삭제의 과정을 통해서

Map에 관한 다양한 실습을 해볼 수 있는 문제이다.

 

Map 컬렉션 생성

예시에서는 Map 인터페이스를 구현한 대표적인 컬렉션인 HashMap을 선택하였다.

new HashMap<>();에서 <> 안은 생략을 하여도, 왼쪽편에 String, Integer가 셋팅된다

Map 컬렉션 생성

 

객체 저장

Map을 저장할때는 put을 이용한다.

put(key, value)로 사용할 수 있는데, key는 중복이 되지 않기 때문에 나중에 입력한게 들어간다.

객체 저장

 

객체 찾기

map에 있는 value를 get()을 통해서 조회하였다.

get안에는 key값을 넣어 value를 찾을 수 있다.

객체 찾기

 

객체를 하나씩 처리

map에 있는 모든 key와 value를 출력하기 위한 예시이다

예제에서는 .keySet()을 통해서 모든 key를 얻었고, 반복자를 통해 키를 하나씩 얻어서 값을 출력해준다.

객체를 하나씩 처리

사실 이렇게 해도 되지만,

해당 map의 모든 key와 value를 뽑는게 목적이라면

key / value 처리

다음과 같이 향상된 for문을 통해서 더 간단하게 구현할 수도 있다.

 

map의 경우에는 key, value값을 단순하게 구하는것부터 많이 사용이 되지만,

중요한점은 key와 value가 모두 '객체'라는 것이다.

최근에도 value에 VO객체를 선언해서 사용했던 기억이 있다.

 

map은 주로 put, get을 많이 사용하지만 keySet()이나 entrySet()같은것도 잘 알아두면 좋다

언제, 어떻게 무엇을 사용할지 모르기 때문에 언제든지 이 기능을 내 머릿속에서 꺼낼 수 있어야한다!

 

 

다름을 만들어내는 시간

사실 이번 챕터에서 다뤘던 부분은 실제 업무를 진행하면서 아주아주아주 많이 사용하는 부분이다.

모든 데이터는 묶어서 받아오고 처리하기 때문이다

 

그렇기 때문에 너무 중요한 부분이지만, 사실 아무 구분없이 사용했던거 같다.

웹 개발자로 일하면서 대부분 리스트/맵만 가지고 사용해왔다.

API 통신을 해서 받아온 정보는 List<VO>로 담아서 처리를 하는 정도?

리스트는 그냥 ArrayList만 때려박았고, Map은 HashMap만 때려넣었다.

 

이번 파트를 잘 공부한다면,

어느상황에 어떤걸 쓰는게 좋을지 고민해본다면

더 좋은 개발자가 될 수 있을거 같다.

더 열심히 해보자!

'Java > 혼공단' 카테고리의 다른 글

[혼공단10기] JAVA - 회고  (0) 2023.08.20
[혼공단10기] JAVA - 6주차  (0) 2023.08.15
[혼공단10기] JAVA - 4주차  (0) 2023.07.25
[혼공단10기] JAVA - 3주차  (0) 2023.07.21
[혼공단10기] JAVA - 2주차  (1) 2023.07.16