Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

8. Collections #14

Open
JustKode opened this issue Feb 23, 2022 · 8 comments
Open

8. Collections #14

JustKode opened this issue Feb 23, 2022 · 8 comments
Labels
Class Review 매 수업 정리 내용을 5줄 정도로 요약 하여 올립니다.

Comments

@JustKode
Copy link
Member

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

@JustKode JustKode added the Class Review 매 수업 정리 내용을 5줄 정도로 요약 하여 올립니다. label Feb 23, 2022
@Chae-Js
Copy link

Chae-Js commented Feb 23, 2022

  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
Copy link

cherrie-k commented Feb 23, 2022

  • Java는 자료들을 쉽게 관리하기 위해 Collections 패키지를 제공하고, 이는 대표적으로 List, Set, Map으로 나뉜다. 각각 Python에서의 list, set, dict와 유사하다. Collections 패키지는 제너릭 문법을 사용한다.
  • List Interface를 1.Vector, 2.ArrayList, 3.LinkedList의 자료 구조들이 상속받는다. 1은 삽입이 느리지만 탐색이 빠르고, 2는 Vector의 자료 구조를 개선한거고, 3은 삽입이 빠르지만 탐색이 느리다.
  • Set Interface를 HashSet과 SortedSet-TreeSet이 상속받는다. 전자는 Hash Table을 이용해서 데이터에 접근을 빠르게 할 수 있지만, 저장되는 순서는 보장되지 않는다 (저장 순서를 보장하는 HashSet은 LinkedHashSet이다) . 후자는 저장 순서를 유지 하지 않지만, 정렬 상태는 유지 가능하다. Tree구조를 이용한 Set이기 때문에 삽입은 느리고 탐색은 빠르다.
  • Map Interface는 키 값을 저장하는 자료구조를 구현할때 쓰인다. 1.HashMap-LinkedHashMap, 2.HashTable, 3.TreeSet이 이를 상속받는다. 1은 정렬이 필요 없이 Hash 기법을 사용해 빠르게 키 값에 접근을 할 수 있고, 2는 1과 동일한 기능을 수행하고 현재는 잘 쓰이지 않는다(deprecated).
  • 참고) TreeSet과 TreeMap의 차이: 전자는 값만 저장하지만 후자는 키, 값이 저장된 Map.Entry를 저장한다.

@choi5798
Copy link

자바에는 자료구조에 관련된 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
Copy link

kevinlim17 commented Feb 24, 2022

  • Java 에는 개발자로 하여금 자료들을 쉽게 관리하기 위해 제공되는 Collections 패키지가 있다. Collections 패키지는 List, Set, Map 이라는 크게 3가지 인터페이스로 이루어지는데, 그 중 ListSetCollection 이라는 인터페이스를 상속받는다.
  • List는 데이터의 중복을 허용하며, 순서가 있는 데이터의 집합이다. List 인터페이스를 상속받은 자료구조 클래스에는 크게 3가지가 있는데, 그 중 Vector는 데이터의 삽입은 느리지만 탐색은 빠른 자료구조이고, ArrayList는 Vector를 개선한 자료구조, LinkedList는 데이터의 삽입은 빠르지만 탐색은 느린 자료구조이다.
  • Collections 패키지에 구현된 자료구조 클래스들은 (C++의 탬플릿 문법과 유사한) 제너릭 문법을 통해 활용한다. (ex. (원시 타입) <(타입 변수)> (객체 이름) = new (원시 타입) <타입 변수>;, ArrayList<Integer> arraylist = new ArrayList<Integer>; )
  • List Interface에 구현된 메소드들 중 void sort(Comparator c)같은 경우, 익명 객체를 사용해 적절한 Comparator<T>를 삽입하고, 그 안에서 int compare() 메소드를 오버라이딩해, 프로그램 목적에 맞게 -1, 0, 1을 return하도록 구현하면 된다.
  • Set은 데이터의 중복을 허용하지 않으며, 순서가 없는 데이터의 집합이다. Set 인터페이스를 상속받은 자료구조 클래스에는 3가지가 있는데, 그 중 HashSet은 Hash Table을 사용해 데이터로의 빠른 접근이 용이하나 저장 순서를 보장하지 않는 자료구조이고, LinkedHashSet은 저장 순서를 보장하는 HashSet이며, TreeSet은 삽입은 느리지만 탐색은 빠른 Tree 구조를 이용한 Set으로, 저장 순서를 보장하지는 않지만 정렬 상태를 유지할 수 있는 자료구조이다.
  • Map은 '키(key)-값(value)'의 쌍이 존재하는 데이터 집합이다. Map 인터페이스를 상속받은 자료구조 클래스에는 4가지가 있는데, 그 중 HashMap은 Hash 기법을 사용해 빠르게 Key 값에 접근할 수 있는 자료구조이고, HashTable은 HashMap과 동일한 기능을 수행하며 현재는 사용되지 않는다. LinkedHashMap은 HashMap에 삽입 순서를 유지할 수 있는 기능이 추가된 것이며, TreeMap은 Key 정렬 기능이 추가된 Map 자료구조이다.

@splguyjr
Copy link

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
Copy link

lomayd commented Feb 24, 2022

  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
Copy link

  • Collections(Java에서 자료들을 쉽게 관리하기 위해 제공하는 패키지)는 3가지 인터페이스로 나뉜다.
  1. List: 순서가 있는 데이터의 집합. 구현 클래스로는 ArrayList, LinkedList, Stack, Vector가 있다. 구현된 메서드들로는 void add(int index, Object element), boolean addAll(int index, Collection c), void sort(Comparator c) 등이 있다.
  2. Set: 순서가 없으며 중복을 허용하지 않는 데이터의 집합. 구현 클래스로는 HashSet, TreeSet이 있다. 구현된 인터페이스로는 ad(Object o), size(), clear() 등이 있다.
  3. Map: 키, 값 쌍이 있는 데이터의 집합. 메서드들로는 void putAll(Map t), Object get(Object key), Set KeySet(), Object remove(Object key) 등이 있다.

@yoongja
Copy link
Member

yoongja commented Feb 25, 2022

  • Collections : 자료를 쉽게 관리할 수 있는 패키지이며, list,set,map 3가지 인터페이스가 있다.
  • list : python의 list와 유사한 인스턴스의 저장 순서를 유지하고, 동일한 인스턴스의 중복 저장을 허용한다. list 인터페이스를 구현하는 컬렉션 클래스로 vector,arraylist,linkedlist 가 존재한다
  • set : 저장 순서가 유지되지 않으며,데이터의 중복 저장을 허용하지 않는 인터페이스이다.수학의 집합 특성을 지니고 있다.set 인터페이스를 이용한 구현 클래스로 HashSet,SortedSet,TreeSet이 있다.
  • map : python 의 dict와 유사하며 map 을 구현하는 컬렉션 클래스의 인스턴스들은 key와 value가 한 쌍을 이루는 형태로 데이터를 저장한다. map을 구현 하는 대표 클래스로는 HashMap,TreeMap이 존재한다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Class Review 매 수업 정리 내용을 5줄 정도로 요약 하여 올립니다.
Projects
None yet
Development

No branches or pull requests

9 participants