· 오늘 공부한 것
java 컬렉션에 대해서 학습
· 공부한 내용, 궁금한 내용, 부족한 내용
Collection 에는 List, Set, Queue, Map이 있다.
List
- 순서가 있는 데이터의 집합 (데이터 중복 허용)
- ArrayList, LinkedList, Stack 이 있다.
- ArrayList : 배열처럼 일렬로 데이터를 저장하고 조회하여 인덱스로 값을 하나씩 조회할 수 있다.
- Array (배열)은 크기를 고정하여 생성하는 정적배열이고 ArrayList 는 크기가 가변적으로 늘어나는 동적배열이다
// 선언
ArrayList<Integer> intList
// 생성
new ArrayList<Integer>();
// 값 추가
intList.add(추가할 값)
// 값 수정
intList.set(수정할 인덱스, 수정할 값)
// 값 삭제
intList.remove(삭제할 인덱스)
// 전체 출력
intList.toString()
// 전체 제거
intList.clear()
-
- LinkedList : 메모리 남는 공간 여러 장소에 실제값을 담아놓고 주소값으로 목록을 구성하고 저장한다.
- 실제값을 나누어서 담았기 때문에 조회 속도가 느리다. 하지만 값을 추가, 삭제할 때는 속도가 빠르다.
// 선언
LinkedList<Integer> linkedList
// 생성
new LinkedList<Integer>();
// 값 추가
linkedList.add(추가할 값)
// 값 중간에 추가
linkedList.add(추가할 인덱스, 추가할 값)
// 값 수정
linkedList.set(수정할 인덱스, 수정할 값)
// 값 삭제
linkedList.remove(삭제할 인덱스)
// 전체 출력
linkedList.toString()
// 전체 제거
linkedList.clear()
-
- Stack : 탑을 쌓듯이 값을 넣었다가 빼서 조회하는 형식으로 데이터를 관리한다.
- LIFO(Last-In-First-Out) 나중에 들어간 것이 가장 먼저 나온다.
// 선언
Stack<Integer> intStack
// 생성
new Stack<Integer>();
// 값 추가
intStack.push(추가할 값)
// 값 조회 : 맨 위값을 조회
intStack.peek()
// 값 꺼내기 : 맨 위값을 꺼내기 (꺼내면 삭제됨)
intStack.pop()
Queue
- 터널에 자동차가 들어가서 나오듯이 값을 한쪽으로 넣었다가 반대편으로 빼서 조회하는 형식으로 데이터를 관리한다.
- FIFO(First-In-First-Out) 먼저 들어간 것이 가장 먼저 나온다.
- 생성자가 없는 인터페이스라서 LinkedList를 사용하여 생성한다.
// 선언
Queue<Integer> intQueue
// 생성
new LinkedList<Integer>();
// 값 추가
intQueue.add(추가할 값)
// 값 조회 : 맨 아래값을 조회
intQueue.peek()
// 값 꺼내기 : 맨 아래값을 꺼내기 (꺼내면 삭제됨)
intQueue.poll()
Set
- 순서가 없는 데이터의 집합
- 데이터 중복을 허용하지 않는다.
- 생성자가 없는 인터페이스라서 HashSet를 사용하여 생성한다. (TreeSet, LinkedHashSet 도 있음)
- 순서 보장이 필요하면 LinkedHashSet을 사용한다.
// 선언
Set<Integer> intSet
// 생성
new HashSet<Integer>();
// 값 추가
intSet.add(추가할 값)
// 값 조회 : 해당 인덱스의 값을 조회
intSet.get(조회할 인덱스)
// 값 삭제
intSet.remove(삭제할 인덱스)
// 값 포함확인 : 결과가 boolean 값으로 나온다.
intSet.contains(포함확인할 값)
Map
- key-value 구조로 구성된 데이터를 저장할 수 있다.
- key값을 기준으로 value를 조회할 수 있다. (위에 있는 것처럼 index 방식 x)
- HashMap, TreeMap 등으로 응용하여 사용할 수 있다.
// 선언
Map<String, Integer> intMap
// 생성
new HashMap<>();
// 추가
intMap.put(추가할 key값, 추가할 value값)
// 조회 : 해당 key에 있는 value값을 조회
intMap.get(조회할 key값)
// 전체 key 조회
intMap.keySet()
// 전체 value 조회
intMap.values()
// 삭제
intMap.remove(삭제할 key값)
· 오늘 서칭 한 자료
강의 자료
https://www.tcpschool.com/java/java_collectionFramework_concept
· 느낀 점
자료구조에서 공부했던 stack, queue가 자바에서는 class로 구현을 해놨는데 많이 사용해서 그런거 같다.
데이터의 형태를 보고 내가 원하는 방법으로 저장하기 위해서 알아두면 좋을 거 같다.
배열보다 리스트가 크기를 정해놓지 않아서 자주 사용하게 될 거 같다.
해당 컬렉션에서 사용되는 메서드들을 알아두면 생각날 때 사용할 수 있을 거 같다. (암기보다는 자주 사용해서 익히자!)
반응형
'Today I Learned' 카테고리의 다른 글
2023-10-26 TIL (0) | 2023.10.26 |
---|---|
2023-10-23 TIL (0) | 2023.10.23 |
2023-10-17 TIL (0) | 2023.10.18 |
2023-10-16 TIL (0) | 2023.10.17 |
2023-10-12 TIL (0) | 2023.10.13 |