본문 바로가기
Java/문법

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

by ssury94 2024. 12. 17.
 
 
 

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 데이터를 영구 저장하는 소프트웨어