자바 콜렉션 프레임워크
- 자료구조
배열 int[] arr = new int[10]; //10개, 더 늘리거나 줄이거나 할 수가 없음
📌 예를들어 설명하기
마트에 갔는데 3개의 장바구니가 있다.
고정된 큰 크기의 1번 장바구니
고정된 작은 크기의 2번 장바구니
자유자재로 늘어나고 줄어드는 3번 장바구니
-> 고정된 크기의 장바구니를 들고 갔으면 곤란한 상황이 생길 수 있음
장 보기 편한 장바구니는 역시 3번!!!!
3번 장바구니 = 리스트
* ArrayList : 배열의 단점을 보완
일반 vs 제너릭 비교정리
종류 | 일반 ArrayList | 제너릭된 ArrayList | 일반 HashMap | 제너릭된 HashMap |
생성방법 | ArrayList list = new ArrayList(); | ArrayList<Integer> list = new ArrayList<>(); | HashMap map = new HashMap(); | HashMap<String, Integer> map = new HashMap<>(); |
데이터 넣을 때 | list.add(1); | list.add(1); | map.put("번호", 1); | map.put("번호", 1); |
데이터 뺄 때 | int data = (int)list.get(0); | int data = list.get(0); | int data = (int)map.get("번호"); | int data = map.get("번호"); |
자바 배열, ArrayList, HashMap 비교정리
종류 | 배열 | ArrayList | HashMap |
생성방법 | int[] arr = new int[10]; | List<Integer> list = new ArrayList<>(); | Map<String, Integer> map = new HashMap<>(); |
유연성 | 데이터를 10개 넣을 수 있음, 늘리는 것 불가능 |
신경안써도 됨(알아서 늘어남) | 신경안써도 됨(알아서 늘어남) |
데이터 넣을 때 | arr[0] = 1; | list.add(1); | map.put("영수나이", 1); |
데이터 수정할 때 | arr[0] = 2; | list.set(0, 2); | map.put("영수나이", 2); |
데이터 가져올 때 | int data = arr[0]; | int data = list.get(0); | int data = map.get("영수나이"); |
데이터 지울 때 | 불가능 | list.remove(0); | map.remove("영수나이"); |
데이터 순회 | for ( int i = 0; i < arr.length; i++ ) { System.out.println(arr[i]); } |
for ( int i = 0; i < list.size(); i++ ) { System.out.println(arr.get(i)); } |
for ( String key : map.keySet() ) { System.out.println(key + " : " + arr.get(key)); } |
예제 코드
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
int[] arr = new int[3]; // 배열 선언
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
System.out.println(arr[0] + arr[1] + arr[2]); // 60 출력
System.out.println(arr.length); // 고정길이: 3
// ArrayList<Integer> al = new ArrayList<Integer>(); // v1
// List<Integer> al = new ArrayList<Integer>(); // v2
List<Integer> al = new ArrayList<>(); // v3
al.add(10); // 0
al.add(20); // 1
al.add(30); // 2
System.out.println(al.get(0) + al.get(1) + al.get(2)); // 60 출력
System.out.println(al.size()); // 가변, 길이: 3
al.add(40); // 3
System.out.println(al.size()); // 가변, 길이: 4
}
}