본문 바로가기

프로그래밍/자바

[자바/기본] ArrayList 란?

728x90
반응형
SMALL

ArrayList란?

출처 : https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html

  • 자바 컬렉션 프레임워크 중 하나로 List 인터페이스를 상속받는 클래스이다.
  • ArrayList 는 한번 생성되면 크기가 고정되는 배열 (EX. int[]) 과는 다르게 데이터를 추가 및 삭제하는 등의 메소드들을 지원해주어 편하게 사용할 수 있다는 장점이 있다.
  • 데이터 참조가 매우 빠르다는 장점이 있지만
    • 데이터를 삭제 하는데 많은 연산을 하고,  저장 용량을 늘리는데 많은 시간을 소모한다.

ArrayList 사용법

생성

import java.util.ArrayList;
  • 라이브러리 import 해주어야 함
ArrayList<Integer> arr1 = new ArrayList<Integer>(); // 타입 지정
ArrayList<Integer> arr2 = new ArrayList<>(); // 타입 생략 가능
ArrayList<Integer> arr3 = new ArrayList<>(5); // 초기 용량(Capacity) 설정
ArrayList<Integer> arr4 = new ArrayList<>(arr1); // 다른 Collection값으로 초기화
ArrayList<Integer> arr5 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5)); // Arrays.asList()
  • 위와 같은 방법들로 ArrayList 를 생성해줄 수 있다.

메소드

데이터 추가
boolean add(E e) 리스트의 끝에 데이터 e를 추가
void add(int index, E e) index의 위치에 데이터 e 를 추가
boolean addAll(Collection<?extends E> c) 리스트의 끝에 컬렉션 c의 모든 데이터를 추가 
boolean addAll(int index, Collection<? extends E> c) index의 위치에 컬렉션 c의 모든 데이터를 추가

 

{
    ArrayList<Integer> arr = new ArrayList<>();
    ArrayList<Integer> arr2 = new ArrayList<>();
    //add(E e)
    arr.add(10);
    arr.add(30);
    arr.forEach(System.out::println);   // 10 30

    //add(int index, E e)
    arr.add(1, 20);
    arr.forEach(System.out::println);   // 10 20 30

    //addAll(Collection<? extends E>)
    arr2.addAll(arr);
    arr2.forEach(System.out::println);  //10 20 30

    //addAll(int index, Collection<? extends E>)
    arr2.addAll(2, arr);
    arr2.forEach(System.out::println);  // 10 20 [10 20 30] 30
}

 


 

데이터 삭제
void clear() 리스트의 모든 데이터를 삭제
E remove(int index) index의 위치에 있는 데이터 삭제
boolean remove(Object o) 매개변수로 들어간 Object와 일치하는 것이 있으면 삭제
boolean retainAll(Collection<?> c) 컬렉션 c가 가지고 있는 데이터 중 일지하는 데이터만 남기고 나머지는 삭제
boolean removeAll(Collection<?> c) 컬렉션 c가 가지고 있는 데이터 중 일치하는 모든 데이터 삭제
    ArrayList<Integer> arr = new ArrayList<>(Arrays.asList(10, 20, 30));    //10, 20, 30
    ArrayList<Integer> arr2 = new ArrayList<>(Arrays.asList(30));   //30

    arr.forEach(System.out::println);   // 10 20 30
    System.out.println(arr.size());     //3
    //clear()
    arr.clear();
    arr.forEach(System.out::println);   // 아무것도 출력되지 않음
    System.out.println(arr.size());     //0

    arr.addAll(Arrays.asList(10, 20, 30));

    //remove(int index)
    arr.remove(1);
    arr.forEach(System.out::println);   //10 30

    Integer i = 10;  //AutoBoxing
    //remove(Object o)
    arr.remove(i);
    arr.forEach(System.out::println);   //30

    arr.clear();
    arr.addAll(Arrays.asList(10, 20, 30));
    //retainAll(Collection<?> c)
    arr.retainAll(arr2);
    arr.forEach(System.out::println);   //30

    arr.clear();
    arr.addAll(Arrays.asList(10, 20, 30));
    //removeAll(Collection<?> c)
    arr.removeAll(arr2);
    arr.forEach(System.out::println);   //10 20

 


데이터 확인
int size() 리스트 안의 갯수 반환
boolean isEmpty() 리스트가 비어있는지를 확인 (비어있으면 true)
boolean contains(Object o) 매개변수가 포함되어있는지 확인 (있으면 true)
int indexOf(Object o) 매개변수가 리스트 안에서 몇번째 인덱스에 있는지 확인 하고 알려줌
맨 처음을 시작점으로 처음 나온 인덱스를 알려주게 됨
없으면 -1
int lastIndexOf(Object o) 매개변수와 마지막으로 일치하는 데이터의 인덱스를 반환
없으면 -1
ArrayList<Integer> arr = new ArrayList<>(Arrays.asList(10, 20, 30));    //10, 20, 30
ArrayList<String> arr2 = new ArrayList<>(Arrays.asList("A", "B", "C", "A", "D"));   //30

//size()
System.out.println(arr.size());     //3

//isEmpty()
System.out.println(arr.isEmpty());  //false
arr.clear();
System.out.println(arr.isEmpty());  //true

// contains()
System.out.println(arr2.contains("A")); //true
System.out.println(arr2.contains("E")); //false

//indexOf(Object o)
System.out.println(arr2.indexOf("A"));  //0
//lasIndexOf(Object o)
System.out.println(arr2.lastIndexOf("A"));  //3

데이터 요소 조회, 변경
Object get(int index) 매개변수에 있는 값을 인덱스로 저장된 객체를 반환
List subList(int fromIndex, int toIndex) fromIndex 부터 toIndex-1 까지의 위치에저장되어있는 객체를 반환한다.
Object set(int index, Object o) 매개변수로 주어지는 index 위치에, 객체 o로 변경한다.
기존의 데이터는 삭제된다.
ArrayList<Integer> arr = new ArrayList<>(Arrays.asList(10, 20, 30));    //10, 20, 30
ArrayList<String> arr2 = new ArrayList<>(Arrays.asList("A", "B", "C", "A", "D"));   //30
//get(int index)
System.out.println(arr.get(1)); //20

//subList(int first, int end)
// 1 ~ 2-1 까지의 List 반환
System.out.println(arr.subList(1,2));// [20]

//set(int index, Object c)
arr.set(1, 50);             //20의 자리를 50으로 변경
System.out.println(arr);    //[10, 50, 30]
//set을 사용할 때, 리스트에 없는 index를 매개변수로 넣으면 java.lang.IndexOutOfBoundsException 발생
728x90
반응형
LIST