article thumbnail image
Published 2021. 7. 27. 15:34
728x90


ArrayList란?

ArraytList란 List 인터페이스를 상속받는 클래스로 크기가 가변적으로 변한다는 특징이 있다. 

일반적인 array 같은 순차리스트이며 인덱스를 이용하여 객체들을 관리한다는 것은 배열과 유사하지만 한번 생성되면 크기가 변하지 않은 배열과는 달리 ArrayList는 객체들이 추가되어 저장 용량을 초과한다면 자동으로 부족한 크기만큼 저장 용량이 늘어난다는 특징을 가지고 있다.

 

 

 

출처 : http://yulsfamily.tistory.com

 

 

 

ArrayList 선언

ArrayList list = new ArrayList();//타입 미설정 Object로 선언된다.

ArrayList<Student> members = new ArrayList<Student>();//타입설정 Student객체만 사용가능

ArrayList<Integer> num = new ArrayList<Integer>();//타입설정 int타입만 사용가능

ArrayList<Integer> num2 = new ArrayList<>();//new에서 타입 파라미터 생략가능

ArrayList<Integer> num3 = new ArrayList<Integer>(10);//초기 용량(capacity)지정

ArrayList<Integer> list2 = new ArrayList<Integer>(Arrays.asList(1,2,3));//생성시 값추가

 

 

ArrayList를 사용할시에는 ArrayList에 타입을 명시해주는것이 좋다.

이때 사용되는 것이 JDK 5.0이후부터 도입된 제너릭스(Generics)라는 개념이다.

ArrayLIst<String> list = new ArrayList<String>(); 이라고 되어있다면 String객체들만 add되어질수있고 다른 타입의 객체는 사용이 불가능하다.

 

※제네릭스는 선언할 수 있는 타입이 객체 타입이다. int는 기본자료형이기 때문에 들어갈수 없으므로 int를 객체화시킨 Integer 즉 wrapper클래스를 사용해야 한다.

 

 

 


 

ArrayList에 값 추가

 

ArrayList에 데이터를 추가할 수 있도록 해보자. 리스트 인터페이스에 있는 add() 메소드를 반드시 구현해야하는 것이기 때문에 Override(재정의)를 한다고 보면 된다.

 

add 메소드에는 크게 3가지로 분류가 된다.

 

- 가장 마지막 부분에 추가 (기본값) - addLast(E value)

- 특정 위치에 추가 - add(int index, E value) 

- 가장 앞부분에 추가 - addFirst(E value)

 

ArrayList<Integer> list = new ArrayList<Integer>();
list.add(3); //값 추가
list.add(null); //null값도 add가능
list.add(1,10); //index 1뒤에 10 삽입
list.addfirst(100); //가장 앞에 100 추가

 

 

 

ArrayList에 값 삭제

 

삭제 remove 메소드의 경우 크게 2가지로 나눌 수 있다.

 

- 특정 index의 요소를 삭제 - remove(int index)

- 특정 요소를 삭제 - remove(Object value)

- 모든 값 삭제 - clear()

 

ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3));
list.remove(1);  //index 1 제거
list.clear();  //모든 값 제거

 

 

 

ArrayList에서 값 출력

ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3));

System.out.println(list.get(0)); //index = 0 의 값 출력 
		
for(Integer i : list) { //for문을 통한 전체출력
    System.out.println(i);
}

Iterator iter = list.iterator(); //Iterator 선언 
while(iter.hasNext()){//다음값이 있는지 체크
    System.out.println(iter.next()); //값 출력
}

ArrayList의 get(index) 메소드를 사용하면 ArrayList의 원하는 index의 value 즉 값이 리턴된다. 전체출력은 대부분 for문을 통해서 출력을하고 Iterator를 사용해서 출력을 할수도 있다.

 

 

 

 

 

[size, isEmpty 메소드 구현]

 

size()와 isEmpty는 매우 자주 쓰이는 메소드 이고 간단히 구현할 수 있으므로 직접 메소드를 구현해 보겠다.

 

1. size() 메소드

 

ArrayList에서 size 변수는 private 접근제한자를 갖고 있기 때문에 외부에서 직접 참조를 할 수 없다. (왜냐하면 size를 접근할 수 있게 될 경우 size에 사용자가 고의적으로 데이터를 조작할 수 있기 때문이다.)

그렇기에 size 변수의 값을 반환해주는 메소드인 size() 를 만들어줄 필요가 있다.

@Override
public int size() {
	return size;	// 요소 개수 반환
}

 

 

2. isEmpty() 메소드

 

 

isEmpty() 메소드는 현재 ArrayList에 요소가 단 하나도 존재하지 않고 비어있는지를 알려준다.

리스트가 비어있을 경우 true를, 비어있지 않고 단 한개라도 요소가 존재 할 경우 false를 반환해주면 된다. 

@Override
public boolean isEmpty() {
	return size == 0;	// 요소가 0개일 경우 비어있다는 의미이므로 true반환
}

 

 

 

 

 

 

 

 

 

 

 

 

'JAVA' 카테고리의 다른 글

삼항연산자  (0) 2021.07.28
컬렉션 프레임워크  (0) 2021.07.27
Wrapper Class (래퍼 클래스)  (0) 2021.07.23
protected 접근제한자  (0) 2021.07.23
Set 과 Iterator  (0) 2021.07.23
복사했습니다!