배운 내용 🏃
🗳 참조형 분류통으로 정리하기 (컬렉션🧬)
📌 Java 프로그래밍 에서는 배열🗳을 더 고도화
시켜서 컬렉션🧬 이라는 이름으로 참조형 분류통(자료구조)를 제공하 고 있습니다.
컬렉션은 참조형 변수만 저장함으로써 여러 기능을 많이 제공합니다.
컬렉션🧬은 여러가지 종류가 있고,
이러한 컬렉션🧬들은 데이터를 넣고 빼는 방법이 각자 다르기 때문에 용도에 맞 게 사용합니다.
어떤 컬렉션🧬들이 있고 어떻게 사용하는지 학습 해봅시다!
컬렉션🧬 이해하기
• Java 에서 컬렉션🧬은 배열보다 다수의 참조형 데이터를 더 쉽고 효과적으로 처리할 수 있는 기능을 많이 가지고 있다
• 컬렉션🧬 기능 : 크기 자동조정/ 추가/ 수정/ 삭제/ 반복/ 순회/ 필터/ 포함확인 등….
컬렉션🧬 종류
• Collection 에는 List , Set , Queue , Map 이 있다
• List : 순서가 있는 데이터의 집합 (데이터 중복 허용) - 배열과 비슷
• Queue : 빨대🥤처럼 한쪽에서 데이터를 넣고 반대쪽에서 데이터를 뺄 수 있는 집합
• First In First Out : 먼저들어간 순서대로 값을 조회할 수 있다. ( 알아두면 좋음)
• Set : 순서가 없는 데이터의 집합 (데이터 중복 허용 안함) - 순서없고 중복없는 배열
• Map : 순서가 없는 (Key,Value) 쌍으로 이루어진 데이터의 집합 (Key값 중복 허용 안함)
• Collection🧬 은 기본형 변수가 아닌 참조형 변수를 저장한다
❓ 자주쓰는 참조형 변수 몇개만 간단히 알아보자!
• int 의 참조형 변수 = Integer
• long 의 참조형 변수 = Long
• double 의 참조형 변수 = Double
• String 은 원래부터 참조형 변수
List ⛓ : 순서가 있는 데이터의 집합 (데이터 중복 허용) - 배열과 비슷
ArrayList
• ArrayList 는 배열(Array)처럼 일렬로 데이터를 저장하고 조회하여 순번값(인덱스)로 값을 하나씩 조회할 수 있다.
특징
• 배열(Array)처럼 크기가 정해져 있지않고 필요할때마다 크기가 점점 더 늘어난다
여기서 Quiz~~ Array 와 어떤점이 다르길래 ArrayList 는 크기를 지정하지 않아도 되는건가 ??
❓ Array 와 어떤점이 다르길래 ArrayList 는 크기를 지정하지 않아도 되는건가??
먼저, Array 처럼 크기를 고정하여 생성하는 것을 정적배열 이라면
ArrayList 처럼 크기가 가변적으로 늘어나는 것을 동적배열 이라고 한다
Array 은 메모리에 연속된 공간을 요청한 사이즈 만큼 받아서 실제값을 저장하는 기본형 변수로
저장하기 때문에 정적배열이다.
ArrayList 는 생성시점에 작은 연속된 공간을 요청해서 참조형 변수들을 담아놓고, 값이 추가될
때 더 큰 공간이 필요하면 더큰 공간을 받아서 저장하기 때문에 동적배열이다
따라서, 기본형 변수로 저장하는 Array 는 정적배열이고, 참조형 변수로 저장하는 ArrayList 는 동적
배열이라고 기억하면 된다
기능
• 선언 : ArrayList intList 형태로 선언한다
• 생성 : new ArrayList(); 형태로 생성한다
• 초기화 : 사이즈를 지정하는것이 없기 때문에 초기화가 필요 없다
• 값 추가 : intList.add({추가할 값}) 형태로 값을 추가한다
• 값 수정 : intList.set({수정할 순번}, {수정할 값}) 형태로 값을 수정한다
• 값 삭제 : intList.remove({삭제할 순번}) 형태로 값을 삭제한다
• 전체 출력 : intList.toString() 형태로 전체 값을 대괄호 [ ] 로 묶어서 출력한다
• 전체 제거 : intList.clear() 형태로 전체 값을 삭제한다
ArrayList 코드로 알아보자!!
// ArrayList
// (사용하기 위해선 import java.util.ArrayList; 를 추가해야합니다.)
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> intList = new ArrayList<Integer>(); // 선언 및 생성
intList.add(1);
intList.add(2);
intList.add(3);
System.out.println(intList.get(0)); // 1 출력
System.out.println(intList.get(1)); // 2 출력
System.out.println(intList.get(2)); // 3 출력
System.out.println(intList.toString()); // [1,2,3] 출력
intList.set(1, 10); // 1번순번의 값을 10으로 수정합니다.
System.out.println(intList.get(1)); // 10 출력
intList.remove(1); // 1번순번의 값을 삭제합니다.
System.out.println(intList.toString()); // [1,3] 출력
intList.clear(); // 전체 값을 삭제합니다.
System.out.println(intList.toString()); // [] 출력
}
}
LinkedList
📌 LinkedList 는 메모리에 남는 공간을 요청해서 여기저기 나누어서 실제값을 담아놓고, 실제값이 있는 주소값 으로 목록을 구성하고 저장한다
특징
• 기본적인 기능은 ArrayList 와 동일하지만 LinkedList 는 값을 나누어 담기 때문에 모든값을 조회하는 속도가 느립니다. 대신에, 값을 중간에 추가하거나 삭제할때는 속도가 빠르다.
• 중간에 값을 추가하는 기능이 있습니다. (속도 빠름)
기능
• 선언 : LinkedList linkedList 형태로 선언한다
• 생성 : new LinkedList(); 형태로 생성한다
• 초기화 : 사이즈를 지정하는것이 없기 때문에 초기화가 필요 없다
• 값 추가 : linkedList.add({추가할 값}) 형태로 값을 추가한다
• 값 중간에 추가 : linkedList.add({추가할 순번}, {추가할 값}) 형태로 값을 중간에 추가한다
• 값 수정 : linkedList.set({수정할 순번}, {수정할 값}) 형태로 값을 수정한다
• 값 삭제 : linkedList.remove({삭제할 순번}) 형태로 값을 삭제한다
• 전체 출력 : linkedList.toString() 형태로 전체 값을 대괄호 [ ] 로 묶어서 출력한다
• 전체 제거 : linkedList.clear() 형태로 전체 값을 삭제한다
LinkedList 코드로 알아보자!
// LinkedList
// (사용하기 위해선 import java.util.LinkedList; 를 추가해야합니다.)
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
LinkedList<Integer> linkedList = new LinkedList<>(); // 선언 및 생성
linkedList.add(1);
linkedList.add(2);
linkedList.add(3);
System.out.println(linkedList.get(0)); // 1 출력
System.out.println(linkedList.get(1)); // 2 출력
System.out.println(linkedList.get(2)); // 3 출력
System.out.println(linkedList.toString()); // [1,2,3] 출력 (속도 느림)
linkedList.add(2, 4); // 2번 순번에 4 값을 추가합니다.
System.out.println(linkedList); // [1,2,4,3] 출력
linkedList.set(1, 10); // 1번순번의 값을 10으로 수정합니다.
System.out.println(linkedList.get(1)); // 10 출력
linkedList.remove(1); // 1번순번의 값을 삭제합니다.
System.out.println(linkedList); // [1,4,3] 출력
linkedList.clear(); // 전체 값을 삭제합니다.
System.out.println(linkedList); // [] 출력
}
}
마무리🔥
배열어렵다 배열을 이용해서 코드를 더 많이 짤 수 있게
연습을 많이 해야될 거 같다
'TIL' 카테고리의 다른 글
TIL - 2024/05/03 (0) | 2024.05.03 |
---|---|
TIL - 2024/05/02 (0) | 2024.05.02 |
TIL - 2024/04/30 (0) | 2024.04.30 |
TIL - 2024/04/29 (0) | 2024.04.29 |
TIL - 2024/04/26 (0) | 2024.04.26 |