[Java] ArrayList 사용법

rara_kim·2022년 11월 21일
0

자료구조/알고리즘

목록 보기
9/10

ArrayList란?

ArrayList는 자바의 컬렉션 프레임워크의 일부로 List 인터페이스를 상속받은 클래스 중 하나이다.

ArrayList는 한번 생성하면 크기가 고정되는 배열과 다르게 부족한 공간을 자동으로 조정해주는 선형리스트 이다.
배열은 데이터를 추가, 삭제 시 반복문으로 인덱스를 한칸씩 밀거나 당기는 식으로 공간을 조절하지만 ArrayList는 이 과정을 자동으로 처리해주어 사용이 편리하다.


ArrayList 사용법

ArrayList<Integer> list = new ArrayList<Integer>();   
ArrayList<String> list2 = new ArrayList<>();         // 타입 생략 가능
ArrayList<Person> list3 = new ArrayList<>();         // 타입으로 클래스도 가능

선언시 자료의 안정성을 위해 제네릭(Generic)방식으로 타입을 미리 지정해주어 같은 타입의 객체들만 리스트에 추가하도록 할 수 있다.

ArrayList 데이터 추가

ArrayList<Integer> list = new ArrayList<>();

list.add(1);     // 데이터 추가
list.add(3);
list.add(1, 2);  // 1번 indexdp 2 추가

ArrayList 데이터 삭제

ArrayList<Integer> list = new ArrayList<>();

list.add(1);     
list.add(2);
list.add(3);

list.remove(2);                 //2번 인덱스의 데이터 삭제
list.remove(list.indexOf(1));   //1을 가지고 있는 인덱스를 리턴하여 삭제
list.clear();                   //리스트의 모든 데이터 삭제

ArrayList 값 가져오기

ArrayList<Integer> list = new ArrayList<>(Arrays.asList(2, 4, 6, 8, 10));

System.out.println(list.get(3));    //3번 인덱스에 위치한 값 출력, 8
System.out.println(list.get(0));    //0번 인덱스에 위치한 값 출력, 2

ArrayList 사이즈 확인

ArrayList<Integer> list = new ArrayList<>(Arrays.asList(2, 4, 6, 8, 10));
System.out.println(list.size());   //5

list.add(12);
System.out.println(list.size());   //6

ArrayList 특정 값을 포함하는지 검색

ArrayList<Integer> list = new ArrayList<>();

list.add(1);     
list.add(2);
list.add(3);

int index = list.indexOf(2);          //원하는 값의 인덱스를 리턴, 없는 경우 -1 리턴, 1
boolean contains = list.contains(3);  // 특정 값이 있는지 확인, true

ArrayList 값 출력

ArrayList<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
System.out.println(list);             //list 전체 출력
System.out.println(list.get(3));      //3번 인덱스에 위치한 값 출력

for (int item: list) {          
	System.out.print(item + " ");          //1 2 3 4 5 
}

Iterator iter = list.iterator();           //Iterator를 사용하는 경우
while (iter.hasNext()) {
	System.out.print(iter.next() + " ");   //1 2 3 4 5 
}

profile
느리더라도 꾸준하게

0개의 댓글