Java - ArrayList - 배열 메모리 동적 할당

반응형

배열 (Array)

  • 메모리에 정적으로 할당
  • 선언시에 갯수를 정의
  • 한번 정의한 배열의 갯수를 초과하면 데이터의 추가가 불가
  int[] numArry = new int[2]; // 생성시에는 갯수
  numArry[0] = 1; // 인덱스는 0부터 시작
  numArry[1] = 2; // new int[2]로 선언한 numArry의 마지막 인덱스
  System.out.println(numArry[0] + numArry[1]); // 12
  
  // 처음 선언한 범위를 초과하면 에러 출력
  numArry[2] = 3; // Error : Index 2 out of bounds for length 2

배열 리스트 (ArrayList)

  • 메모리에 동적으로 할당
  • 선언시에 갯수를 정의하지 않아도 됨
  • 갯수에 상관없이 데이터의 추가 삭제가 자유로움
  • 저장 할 데이터 타입 선언은 <>를 통해서 정의
ArrayList<String> nameList = new ArrayList<String>(); // 빈 배열 리스트 객체 생성

  • 중요! ArrayList를 사용하려면 라이브러리 호출
import java.util.ArrayList;

값 추가

  • ArrayList.add : 배열에 데이터 추가
nameList.add("홍길동");
nameList.add("김철수");

 

  • ArrayList.add(인덱스, 값) : 특정 인덱스에 데이터 추가, 기존 데이터의 인덱스의 값은 +1
// nameList = [홍길동, 김철수]
nameList.add(1, "김유신");
for(int i = 0; i < nameList.size(); i++) {
	System.out.println(nameList.get(i));
}
// 홍길동
// 김유신
// 김철수

데이터 액세스

  • ArrayList.get(인덱스) : 인덱스로 데이터 접근
// nameList = [홍길동, 김유신, 김철수]
System.out.println(nameList.get(1)); // 김유신

배열의 크기 확인

  • ArrayList.size() : 배열의 크기 확인
// nameList [홍길동, 김유신, 김철수]
ystem.out.println(nameList.size()); // 3

배열의 데이터 삭제

  • ArrayList.remove(인덱스) : 특정 인덱스의 데이터 삭제, 특정 인덱스 이후의 값들은 -1
// nameList = [홍길동, 김유신, 김철수]
nameList.remove(1); // 김유신 삭제
for(int i = 0; i < nameList.size(); i++) {
	System.out.println(nameList.get(i));
}
// nameList.size = 2
// 홍길동
// 김철수 (인덱스 1)

 

  • ArrayList.clear() : 배열의 데이터 전부 삭제
// nameList = [홍길동, 김철수]
nameList.clear();
System.out.println(nameList.size()); // 0

빈 배열인지 확인

  • ArrayList.isEmpty() : 배열의 데이터가 비어있는지 확인
// nameList = Null
if (nameList.isEmpty()) {
	System.out.println("배열의 값이 없습니다.");
}
else {
	System.out.println("배열의 값이 존재합니다.");
}
// 배열의 값이 없습니다.

다른 클래스를 이용하여 배열 리스트 생성 후 데이터 접근해보기

  • 멤버 클래스의 이름을 저장하고, 배열 리스트의 값 추가하여 데이터 접근하기
// 멤버 클래스 (Member)
public class Member {
   private String name;
   // 생성자, 초기 값 설정
   public Member(String name) {
      this.name = name;
   }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }   
}

// 메인 클래스 (ArrayListTest)
import java.util.ArrayList;
public class ArrayListTest {
	public static void main(String[] args) {
	ArrayList<Member> memberArray = new ArrayList<Member>();
	// Member 클래스를 배열 리스트로 객체화
	Member m = new Member("홍길동"); // Member 클래스 객체화
	memberArray.add(m); // 배열 리스트에 m의 값 저장
	System.out.println( memberArray.get(0).getName() ); // 홍길동
	System.out.println( memberArray.get(0).getName().contains("홍")); // true
	}
}

 

반응형