· 오늘 공부한 것

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

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

 

· 느낀 점

자료구조에서 공부했던 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

+ Recent posts