작년 8월 스터디에서 제가 작성했던 이슈 내용을 가지고 왔습니다. https://github.com/JNU-econovation/Javs/issues/67
개발이나 알고리즘을 풀 때 collection을 상속한 List와 Set, Map는 많이 사용하지만 정작 collection에 대한 기본 지식은 부족한 것 같아 선정하게 되었습니다.
추가로 collections와의 차이점은 무엇일지에 대해 알고자 작성하게 되었습니다.
Collection
Collection Framework에서 최상위 인터페이스
Collection Framework란 뭘까
자료 구조를 바탕으로 객체, 데이터들을 효율적으로 관리할 수 있는 자료 구조들이 있는 라이브러리
컬렉션이라는 단어의 의미 -> 다수의 데이터(데이터 그룹)
그래서 제가 생각하기엔 흔히들 컬렉션이라고 부르는 것이 정확하게는 컬렉션 인터페이스도 맞겠지만 데이터 집합이라는 개념 자체를 지칭하는 것 같다고 느꼈습니다.비슷한 말인 것 같지만요
컬렉션 프레임워크 주요 인터페이스
1. List 인터페이스
2. Set 인터페이스
3. Map 인터페이스
그동안 Collection를 상속한 것이 List, Set, Map이라는 정도만 알고 있었는데, 사실 Map은 Collection 인터페이스를 상속하지 않는다. 컬렉션 프레임워크에 속한 인터페이스 중 하나인 것
Collections
Collection들에 대한 연산을 수행하거나 Collection 객체를 반환하는 static 유틸리티 함수들이 정의된 클래스
+ 컬렉션에서 작동하거나 컬렉션을 반환하는 정적 메서드로만 구성
-> 이것도 인터페이스마다 구현체가 있는데 굳이 왜 필요할까 라는 생각이 들었는데 각 구현체에는 구현체에 맞는 부분만 구현이 되어있고 정렬, 병합, 검색 등등은 Collections에 구현이 되어있어 Collections이 생겼구나 라고 이해했습니다근데 문득 드는 생각... 얘는 왜 이름이 s가 붙었을까요 Collection도 어차피 집합을 나타내는 거 아닌가... 마땅한 이름이 없었나...굳이굳이 Collections로 해서 더 헷갈리게ㅔ...
Collections 네이밍
Collections 네이밍에 대해서 조금 더 찾아보았습니다.
- Arrays, Collections, Executors, Files, Objects, Utilities처럼 복수형들이 JDK에는 더 있는데
- 대부분 이런 모든 클래스는 해당 객체의 유틸리티 또는 팩토리 메서드를 보유하는 네임스페이스일 뿐이다.
실제로는 이러한 객체의 컬렉션을 포함하거나 유지 관리하기 때문에 객체지향 설계에 위배되지만 합리적으로 생각하면 이러한 이름은 읽기 쉽고 완전히 괜찮다고 합니다.
전 합리적인 생각이라는 게 잘 와닺지 않기는 하네요
+) 참고로 이러한 명명 규칙은 Java 7 API 디자이너들 사이에서 매우 인기가 있었다고 하네요!
'JAVA 🎻' 카테고리의 다른 글
JVM은 처리하지 않은 예외를 어떻게 처리할까? StackTrace 알고보자 (1) | 2024.07.21 |
---|---|
[Java] StackTrace란 (0) | 2023.10.12 |
내가 보려고 정리한 Map의 메서드 (0) | 2023.08.18 |
Function Interface과 Lambda Expression (0) | 2023.08.17 |
[JAVA] Reactive Streams, Back Pressure란? (0) | 2023.08.05 |