Java/문법

Java Array기본문법의 진화! 동적배열을 이용한 ArrayList

ssury94 2024. 12. 17. 14:49
 
 

목차 △닫기

    Data Structure

    데이터를 조직하고 관리하는 방법을 의미

    여러 개의 데이터를 하나의 변수에 저장할 수 있는 구조를 제공

    - CRUD 가 가능해야한다. (신규데이터를 생성, 읽기, 갱신, 삭제 할 수 있어야한다.)

    but 기본 배열 Array문법은 생성 시 배열크기를 먼저 정해둬야하고 추후 크기변경이 불가하다 > 추가 생성에 제약이 있음!

     

    따라서 자바에서는 개수제한없이 데이터를 마음대로 추가할 수 있는 ArrayList, HashMap를 사용한다.

    그 중 ArrayList에 대해 먼저 배워보자!

     

     

    ArrayList:

    • 구조: 동적 배열(크기가 고정되지 않고, 필요에 따라 자동으로 크기를 조절할 수 있는 배열)을 기반으로 하며, 요소를 순차적으로 저장합니다.
    • 중복 허용: 동일한 값을 여러 번 저장할 수 있습니다.
    • 순서 유지: 요소가 삽입된 순서를 유지합니다.

     

    이름 String 을 저장하는 ArrayList만들기

    ArrayList<String> nameList=new ArrayList<>();
    //ArrayList도 클래스
    //Arraylist 만들땐 변수이름에 List 붙여줌
    // <> ArrayList안에 어떤 데이터 저장할지 알려줌

    ArrayList도 자바의.클래스
    Arraylist 만들땐 변수이름에 List 붙여주는쪽이 좋다
    <> ArrayList안에 어떤 데이터형으로 저장할지 지정해준다.

     

    다이아몬드 연산자(Diamond Operator)

    ArrayList<Memo> memoList = new ArrayList<Memo>(); 대신
    ArrayList<Memo> memoList = new ArrayList<>();로 사용합니다.

     

     

    데이터 추가 CRUD의 C add()

    // 데이터 추가 CRUD의 C add()
    nameList.add("홍길동");
    nameList.add("김나나");
    nameList.add("Mikey");

     

    데이터를 저장하는 함수 add(), addAll()
    int index = 어디에 추가할지도 정할 수 있음


    안정하면 마지막 인덱스에 저장

    * 항상 CPU의 첫번째는 [0] 인점을 주의하자

     

    데이터 가져오기 CRUD의 R get()

    //데이터 가져오기 CRUD의 R
    System.out.println(nameList.get(0)); // 자바에서의 배열은 0부터 시작
    System.out.println(nameList.get(1));
    System.out.println(nameList.get(2));

    인덱스에 없는걸 불러오려하면 Index out of bounds 에러가 난다.

     

     

     

     

    데이터 수정하기 CRUD의 U set()

    //데이터 수정하기 CRUD의 U
    nameList.set(1,"홍나나");
    System.out.println(nameList.get(1));

    인덱스 넘버와 바꿀 변수값 입력

     

     

     

    데이터 삭제하기 CRUD의 D remove()

     

    인덱스 넘버로 삭제도 가능하고

    오브젝트로도 (데이터) 삭제 가능하다.

    ▶ Arraylist에 동일 데이터가 있을경우 (홍나나가 2명일경우) 첫번째 홍나나가 삭제된다.

     


    int  을 저장하는 ArrayList 만들때의 주의점

    int로 입력했더니 오류가 남

    객체를 저장(heap에 생성)하는 것이니 클래스명으로!

    not int, yes Integer

     

    * 객체로 저장하는 편이기때문에 int만 들어가는 배열을 쓰는일은 많이 없다.

     

    * Java는 기본형을 객체로 자동 변환하는 auto-boxing 기능을 제공합니다.

    즉, int 값을 ArrayList<Integer>에 추가할 때, 컴파일러가 자동으로 Integer 객체로 변환해줍니다.

    예를 들어, list.add(1);은 실제로 list.add(Integer.valueOf(1));와 같은 방식으로 처리됩니다.

    import java.util.ArrayList;
    
    public class Main {
        public static void main(String[] args) {
            //가격을 저장하는 Arraylist
    
            ArrayList<Integer> priceList =new ArrayList<>();
            priceList.add(3000);
            priceList.add(5000);
            priceList.add(10000);
            priceList.add(3000);
            priceList.add(3000);
           	}
    }

     

     

     

     

     

     

     


    * data는 복수형이다 (2개이상) Datum"이 단수형

    * DataBase 데이터를 영구 저장하는 소프트웨어