STUDY πŸ“š/Java

[Java] λ°°μ—΄μ˜ 단점을 λ³΄μ™„ν•œ ArrayList

daxx0ne 2023. 2. 28. 13:55
μžλ°” μ½œλ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬

- 자료ꡬ쑰

λ°°μ—΄ 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
    }
}