취업문JAVA조 0716 후기

김재동·2024년 7월 20일
0

기타 지식

목록 보기
1/1

2024.07.16 화 취업문 JAVA조 스터디

  • Ice Breaking 및 코드 리뷰
  1. Ice Breaking
    주제: 어느덧, 우리의 수업 종료 까지 D-100 일 남았는데, 각자의 소감을 공유해보자

1) 우정

  • 시간이 참 빨리 가는 것 같다.
  • 배운게 많은 것 같으면서도, 없는 것 같다.
    이를 활용해서 취업이 될지 걱정이 된다.
  • 초반엔 열심히 한 것 같은데 약간 나태해진 것 같다.
  • 프로젝트 한 달 남았는데, 좀 불안하다.

2) 재동

  • 시간이 참 빨리 가는 것 같다.
  • 프로젝트 기대된다.

3) 태용

  • 오히려 초반보다 요즘 더 열심히 사는 것 같다.
  • 자격증이나 공모전 등 개인적인 일정이 많아 바쁘다.

4) 현희

  • 시간이 빠르게 가는게 소름끼친다.
  • 자격증 준비하느라 스트레스 받는다.
  • 스터디도 여러개 하다보니 바쁘다.

5) 준렬

  • 시간이 참 빠르다.
  • 지금까지는 벅찬 일정에 대해 어느정도 까지 감당가능한지 테스트 하는 시간이였다.
  • 이젠 역량을 파악했으니, 다시 열심히 달려야겠다.
  1. 코드 리뷰

1) HashMap, LinkedHashMap, Hashtable 비교

1-1) HashMap

  • 기본 설명 : 가장 일반적으로 사용되는 Map 구현체
  • 동기화: 동기화되지 않음. 멀티스레드 환경에서 안전하지 않습니다.
  • 순서 보장: 삽입 순서를 보장하지 않음.
  • null 허용: 하나의 null 키와 여러 개의 null 값을 허용합니다.
  • 성능: 성능이 좋고, 기본적으로 O(1)의 시간복잡도를 가집니다.
  • 사용 예: 단일 스레드 환경에서 키와 값을 빠르게 저장하고 검색해야 할 때.

1-2) LinkedHashMap

  • 기본 설명: HashMap의 확장 버전으로, 삽입 순서를 유지합니다.
  • 동기화: 동기화되지 않음. 멀티스레드 환경에서 안전하지 않습니다.
  • 순서 보장: 삽입된 순서(혹은 접근 순서)를 보장합니다.
  • null 허용: 하나의 null 키와 여러 개의 null 값을 허용합니다.
  • 성능: HashMap과 유사하지만, 추가적인 순서 유지를 위한 오버헤드가 존재합니다.
  • 특징: 순서를 유지하는 데 필요한 추가적인 메모리가 필요합니다.
  • 사용 예: 순서를 유지하면서 데이터를 저장하고 검색해야 할 때.

1-3) Hashtable

  • 기본 설명: 예전부터 존재하던 Map 구현체로, HashMap과 유사하지만 동기화됩니다.
  • 동기화: 동기화됨. 멀티스레드 환경에서 안전합니다.
  • 순서 보장: 삽입 순서를 보장하지 않음.
  • null 허용: null 키와 null 값을 허용하지 않음.
  • 성능: 동기화로 인해 HashMap보다 성능이 낮습니다.
  • 사용 예: 멀티스레드 환경에서 안전하게 키와 값을 저장하고 검색해야 할 때.

2) Arrays.sort , Collections.sort 비교
참고 티스토리

2-1) Arrays.sort()

  • 사용 대상: 배열 (primitive 배열 및 객체 배열)
  • 정렬 알고리즘: Dual-Pivot Quicksort (primitive 배열), Timsort (객체 배열)
  • 시간 복잡도: 평균적으로 O(n log n) , 최대 O(n^2)
  • 동기화: 동기화되지 않음 (Not thread-safe)

2-2) Collections.sort()

  • 사용 대상: 컬렉션 (주로 List)
  • 정렬 알고리즘: Timsort
  • 시간 복잡도: 평균적으로 O(n log n)
  • 동기화: 동기화되지 않음 (Not thread-safe)

오름차순에선, 평균적으론 시간 복잡도가 비슷하나 최악의 경우엔 Arrays.sort()는
시간 복잡도 문제가 발생하는 경우가 있다.

추가적으로 오름차순이 아닌 내림차순의 경우도 비교해보자.

Array.sort()
=> Arrays.sort(intArray, Collections.reverseOrder());

Collections.sort()
=> Collections.sort(intList, Collections.reverseOrder());

이처럼, 두 경우 모두 reversOrder() 를 활용해야 정렬이 올바르게 되는 것을
알 수 있다!

profile
성장중

0개의 댓글