240424
# 오늘 꼭 기억 해야 할 것!
1. List(ArrayList, LinkedList, Stack), Map, Set, Queue
오늘의 학습
● 1. Collection
● 2. 자바 객체지향 - 클래스
● 2. 자바 객체지향 - 상속
컬렉션 (Collection)
컬렉션은 자바에서 배열의 한계를 극복하기 위해서 만들어진 자료구조이다. (배열보다 더 많은 기능을 제공)
컬렉션의 기능으로는 크기 자동조정/ 추가/ 수정/ 삭제/ 박복/ 순회/ 필터 포함확인 등등 매우 많고 다양하다.
컬렉션은 기본형 변수가 아닌 참조형 변수를 저장한다. ( 배열은
1. 컬렉션(Collection)의 종류
List(ArrayList) : 순서가 있는 데이터의 집합 ( 데이터 중복 허용 )
Map : 순서가 없는 데이터의 집합이다. Key, Value의 형태로 데이터를 저장해준다. ( Key값은 중복 허용 안함 )
Set : 순서가 없는 데이터의 집합이다. ( 데이터 중복 허용 안함 )
Queue : 한쪽으로 데이터를 넣고 반대쪽으로 데이터를 뺄 수 있는 집합( First In First Out )
1. List
List의 종류
1. ArrayList
2. LinkedList
3. Stack
- List를 상속받는 객체는 총 4가지가 존재한다. 그 중에 3가지만 기록을 하겠다.
List의 특징
1. List는 순서가 있는 데이터의 집합이다. 즉, index의 개념이 있다는 의미이다.
2. 기존 배열과 다르게 List는 최초 길이를 몰라도 만들어서 사용할 수가 있다.
- 기존의 배열(Array)은 정적배열로 메모리에서 연속된 공간을 요청한 만큼만 받는다.
( 즉, 최초 길이 모르면 초기화 불가능 )
- 그에 반해 List는 동적배열로써 크기가 가변적으로 늘어난다. 2번이 가능해진다.
1. ArrayList
// List 선언 및 생성
// ArrayList<자료형> list = new ArrayList<>();
ArrayList<Integer> list = new ArrayList<>();
// List 배열 안에 값 추가 메서드
// list.add(자료형에 맞는 값);
// 순서가 있는 배열이므로 저장된 순서대로 index 0부터 시작을 한다.
list.add(10);
list.add(20);
list.add(30);
// List 배열 안에 값 뽑는 메서드
// list.get(index) => index번호를 통해 값을 뽑을 수 있다.
System.out.println(list.get(0));
System.out.println(list.get(1));
System.out.println(list.get(2));
// List 배열 안에 값 수정하는 메서드
// list.set(index, 선언한 자료형에 맞는 값);
// 인덱스 번호를 통해 값을 수정 할 수 있다.
list.set(0, 15);
list.set(0, 25);
list.set(0, 35);
// List 배열 안에 값 삭제하기
// list.remove(index);
// 인덱스 번호를 통해 값을 삭제 하는 메서드
list.remove(0);
list.remove(1);
list.remove(2);
// List 배열 안에 값 전체 삭제하는 메서드
list.clear(); // 전체 값 제거
List(ArrayList)의 주의점으로는 remove메서드를 이용해 값을 지울 때는 맨 마지막에 삽입 된 값이 앞으로 밀린다.
( 즉, index의 번호 또한 앞으로 밀리기 때문에 이 점을 주의해주면 좋다. )
2. LinkedList
1. 메모리에 남는 공간을 요청해서 여기 저기 나누어서 실제 값을 담아놓는다.
2. 실제 값이 있는 주소값으로 목록을 구성하고 저장하는 자료구조이다.
3. List(ArrayList)와 같이 순서를 보장해주는 배열이다.
장점 : 값을 추가하거나, 삭제할때는 빠르다.
: 값을 추가 시 index 사이에도 값을 넣을 수 있다. ( 밑에 예제 코드로 확인 )
단점 : LinkedList는 값을 여기저기 나누어서 담다보니까 조회하는 속도가 느린편이다.
// LinkedList의 선언 및 생성
LinkedList<Integer> list = new LinkedList<>();
// 값 추가 메서드
list.add(10);
list.add(20);
list.add(30);
// index를 이용해 사이에 값 추가 메서드
// list.add(index, 자료형에 맞는 값);
list.add(2, 99); // 결과 => 10, 20, 99, 30 => 중간에 넣는게 가능하다는 장점이있다.
// 값 조회 메서드 => 마찬가지로 index를 통해 조회를 한다.
list.get(0);
list.get(1);
list.get(2);
list.get(3);
// 값 수정 메서드
list.set(1, 77); // set메서드를 이용해 index와 자료형에 맞는 값을 넣어주면 수정이 된다.
// 값 삭제하기
list.remove(1); // index의 번호를 이용해 값을 삭제하며 뒤의 값들이 앞으로 당겨진다.
// 앞에 List와 마찬가지로 인덱스가 당겨진다.
// 값 전체삭제
list.clear();
3. Stack
Stack은 이름 그대로 수직으로 값을 쌓아놓고, 제일 마지막에 들어간 값이 제일 먼저 나오는 자료구조이다.
예시를 들자면 프링글스통에 과자를 넣고 위에서 부터 빼는 느낌이다. ( 통에 넣고 빼는 느낌 )
이 Stack을 사용하는 이유는 최근 저장된 데이터를 나열하고 싶을때 사용한다.
// 선언 및 생성
Stack<Integer> stack = new Stack<>();
// 값 넣기
stack.push(10);
stack.push(20);
stack.push(30);
// 값 뽑기 => 말 그대로 stack에 이 메서드는 값을 진짜 빼버린다.
// 즉, 조회를 해서 확인을 하면 그 값은 배열에서 완전히 빠져나와버린다.
// stack은 마지막에 넣은게 제일 먼저 빠져나오는 구조라 index로 빼오는게 불가능하다.
// 즉, 원하는 값을 가지고오고 싶다면 반복문이나 하나씩 빼는 방법밖에 없다.
stack.pop() // 그냥 뽑는 방법
while(!stack.isEmpty()){ // 반복문을 이용해 값 전체를 뽑는 방법
System.out.println(stack.pop());
}
// 배열 사이즈 조회
stack.size()
// 값 조회 // => 값 확인만 하고 제거하지는 않는다.
stack.peek(); // 마지막 값 확인 가능
stack.peek(); // 마지막 전 값 확인 가능
# 오늘의 회고
오늘 배운 자바의 컬렉션은 총 List, Map, Queue, Set인데 시간이 부족해서 List의 관한 내용만 적게 되었다.
Map, Queue, Set을 복습 후 다시 적어야 될 것 같다.
평소엔 List만 쓰다가 컬렉션의 다른 객체들을 공부를 해보니 신선하고 좋은 경험인 것 같다.
기억에 많이 남도록 앞으로도 많이 응용을 해보도록 하자.
'내일배움캠프 Spring 5기' 카테고리의 다른 글
내일배움캠프 10일차 TIL - 예외(Exception) (0) | 2024.04.25 |
---|---|
내일배움캠프 9일차 TIL - 클래스(Class) (1) | 2024.04.25 |
내일배움캠프 7일차 TIL - 배열(Array) (0) | 2024.04.23 |
내일배움캠프 6일차 TIL - 변수(Variable) (0) | 2024.04.22 |
내일배움캠프 5일차 TIL( 웹 서비스 ) (0) | 2024.04.19 |