Dcom-KHU / cpp-to-java

C++ to Java를 위한 Repository 입니다.
4 stars 0 forks source link

8. Collections #14

Open JustKode opened 2 years ago

JustKode commented 2 years ago

강의 자료 아래 이슈에 답글로 5줄 요약을 남겨 주세요.

Chae-Js commented 2 years ago
  1. Java에는 자료들을 쉽게 관리하기 위해 제공하는 Collection이라는 패키지가 있으며 대표적으로 List, Set, Map으로 나뉜다.
  2. C++의 STL처럼, Collection 패키지의 클래스들은 템플릿 문법과 유사한 제너릭 문법을 사용한다.
  3. List는 순서가 있는 데이터의 집합으로, 구현클래스로는 ArrayList, LinkedList, Stack, Vector가 있으며 Vector는 삽입은 오래걸리지만 탐색이 빠른, ArrayList는 Vector를 개선한 자료구조, Linked 리스트는 삽입은 빠르지만 탐색은 빠르다.
  4. Set은 순서가 없으며 중복을 허용하지 않는 데이터의 집합으로, 구현 클래스로는 HashSet, TreeSet이 있으며, HashSet은 데이터를 빠르게 접근가능하지만 저장순서는 보장하지 않으며, LinkedHashSet은 저장순서를 보장하는 HashSet이다. TreeSet은 삽입은 느리지만 탐색은 빠른 자료구조로, 저장 순서를 유지 하지 않지만, 정렬 상태를 유지 가능한 자료구조이다.
  5. Map은 키,값 쌍이 있는 데이터 집합으로, Python의 dic와 유사하며, HashMap은 키,값을 기반으로 한 정렬이 필요없이 빠르게 키값 접근이 가능한 자료구조이며, LinkedHashMap은 HashMap에 삽입 순서를 유지하는 기능이 추가된 것이며, TreeMap은 키 정렬 기능이 추가된 Map 자료구조이다.
cherrie-k commented 2 years ago
choi5798 commented 2 years ago

자바에는 자료구조에 관련된 Collections 라는 패키지가 있고 크게 LIst, Set, Map 으로 나뉘는데 이는 각각 python의 list, set, dict와 유사하다. 이 중 List와 Set은 Collections 라는 인터페이스를 상속 받는다

c++에서 STL을 이용하여 자료구조를 표현할 때 템플릿 문법을 사용했던 것처럼 자바에서도 제네릭 문법을 사용하여 해당 자료구조들을 구현할 수 있다

List는 크게 Vector(stack), ArrayList, LinkedList 로 나뉘는데 Vector는 삽입은 느리지만 탐색이 빠르다, 그리고 이 vector를 개선한 것이 ArrayLIst로 자바에서 list를 구현할 때 아주 많이 사용된다. 마지막으로 LinkedList는 ArrayList와는 반대로 삽입은 빠르지만 탐색은 좀 느리다.

LIst에서 sort 메서드를 사용할 때는 자바스크립트의 callback함수 처럼 Comparator 객체를 List.sort() 안에서 구현해줘야 한다 내부의 compare 메서드를 오버라이드 하며 상황에 맞게 -1, 0, 1을 return하게 구현하면 된다.

Set은 일반적인 Set인 HashSet이 있고 저장순서를 보장하는 LinkedHashSet이 존재한다. 그리고 저장순서는 보장되지 않지만 정렬상태가 유지되는 TreeSet도 존재한다

Map이란 key, value 한 쌍으로 data를 저장하는데 일반적인 HashMap이 있고 삽입순서를 보장해주는 LinkedHashMap, 그리고 트리구조를 이용하여 키를 정렬할 수 있는 TreeMap 이 존재한다.

Hash로 시작하는 collections 들은 hash 구조 특성상 자료의 삽입 순서 등은 보장하지 않지만 탐색이 빠르다.

kevinlim17 commented 2 years ago
splguyjr commented 2 years ago

Collections -자료를 쉽게 관리하기 위해 Java에서 제공하는 패키지 -대표적으로 List, Set, Map으로 나뉨.

List -순서가 있는 데이터의 집합이며 중복을 허용한다. -ArrayList, LinkedList, Stack, Vector -Vector는 삽입이 느리지만 탐색이 빠르고 LinkedList는 삽입이 빠르지만 탐색이 느림. ArrayList는 벡터와 동일한 기능.

제너릭 문법 -ex) ArrayList arrayList = new ArrayList(10); 이때 사이즈는 10

Set -순서가 없으며, 중복을 허용하지 않음 -HashSet, LinkedHashSet, TreeSet -HashSet은 Hash Table을 이용하여 데이터를 빠르게 접근 가능하도록 만들었지만 저장 순서가 보장되진 않음(LinkedHashSet)은 가능. -TreeSet은 삽입은 느리지만 탐색은 빠른 Tree 구조로 저장 순서를 유지하지 않지만, 정렬 상태를 유지 가능.

Map -키, 값 쌍이 있는 데이터 집합 -HashMap, HashTable, LinkedHashMap, TreeMap

lomayd commented 2 years ago
  1. Java에는 동일한 규격을 위한 많은 데이터를 쉽게 관리하기 위한 collection이 존재하고, 대표적인 인터페이스는 list, set, map이 있다.

  2. collection 패키지에 구현된 클래스들은 템플릿 문법과 유사한 제너릭 문법을 사용한다.

  3. list 인터페이스에는 vector, arraylist, linkedlist가 존재하는데, vector은 삽입이 오래걸리나 탐색이 빠른 자료구조, arraylist는 vector 자료구조를 개선한 버전, linkedlist는 삽입은 빠르지만 탐색이 느린 자료구조이다.

  4. set 인터페이스는 hashset, linkedhashset, treeset이 존재하는데, hashset은 hash table을 이용해 저장 순서를 보장하진 않지만 데이터를 빠르게 접근할 수 있는 자료 구조이고, linkedhashset은 저장 순서를 보장하는 hashset이고, treeset은 저장 순서를 유지하진 않지만 정렬 상태 유지가 가능한 자료구조이다.

  5. map 인터페이스는 hashmap, linkedhashmap, treemap이 존재하는데, hashmap은 정렬 필요 없이 빠른 키 값 접근이 가능한 자료구조이고, linkedhashmap은 삽입 순서를 유지하는 hashmap이고, treemap은 키 정렬 기능이 추가된 자료구조이다.

nahyun0121 commented 2 years ago
yoongja commented 2 years ago