본문 바로가기
코딩 문제/알고리즘

[자료구조] ArrayList 사용법 & 예제

by CODESIGN 2022. 3. 16.

ArrayList

ArrayList는 List 인터페이스를 상속받은 클래스로 크기가 가변적으로 변하는 선형 리스트입니다. 일반 배열과 동일하게 연속된 메모리 공간을 사용하며 인덱스는 0부터 시작합니다. 일반적인 배열과 같은 순차 리스트이며 인덱스로 내부의 객체를 관리한다는 점등이 유사하지만 한번 생성되면 크기가 변하지 않는 배열과는 달리 ArrayList는 객체들이 추가되어 저장 용량(capacity)을 초과한다면 자동으로 부족한 크기만큼 저장 용량(capacity)이 늘어난다는 특징을 가지고 있습니다.

 

ArrayList 생성

 

// 자바에서 ArrayList를 사용하려면 아래 구문을 추가해주어야 합니다.
import java.util.ArrayList;

 

ArrayList 사용법

 

ArrayList list = new ArrayList();//타입 미설정 Object로 선언된다.
ArrayList<Student> members = new ArrayList<Student>();//타입설정 Student객체만 사용가능
ArrayList<Integer> integer = new ArrayList<Integer>();//타입설정 int타입만 사용가능
ArrayList<Integer> integer2 = new ArrayList<>();//new에서 타입 파라미터 생략가능
ArrayList<Integer> integer3 = new ArrayList<Integer>(10);//초기 용량(capacity)지정
ArrayList<Integer> list2 = new ArrayList<Integer>(Arrays.asList(1,2,3));//생성시 값추가

 

ArrayList 값 추가

 

// add() 메소드로 엘리먼트를 추가할 수 있습니다.
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(2); //값 추가
list.add(null); //null값도 add가능
list.add(1,5); //index 1에 5 삽입

ArrayList<Student> school = new ArrayList<Student>();
Student student = new Student(name,age);
school.add(student);
school.add(new Member("Sam",12));

 

ArrayList에 값을 추가하려면 ArrayList의 add(index, value) 메서드를 사용하면 됩니다. index를 생략하면 ArrayList 맨 뒤에 데이터가 추가되며 index중간에 값을 추가하면 해당 인덱스부터 마지막 인덱스까지 모두 1씩 뒤로 밀려납니다. 

 

add(index, value)  사용 전

 

import java.util.ArrayList;

public class ArrayListTest {
    public static void main(String[] args) {
        ArrayList<String> names = new ArrayList<>();
        // add() method
        names.add("Sam");
        names.add("George");
  //      names.add(0, "David");
        names.add("Sally");

        System.out.println(names);
    }
}

// 결과
// [Sam, George, Sally]

 

add(index, value)  사용 후

 

import java.util.ArrayList;

public class ArrayListTest {
    public static void main(String[] args) {
        ArrayList<String> names = new ArrayList<>();
        // add() method
        names.add("Sam");
        names.add("George");
        names.add(0, "David");
        names.add("Sally");

        System.out.println(names);
    }
}

// 결과
// [David, Sam, George, Sally]

 

 순서대로 추가가 되며 David가 첫 번째에 추가되면서 Sam, George, Sally는 각각 한 칸씩 밀리게 됩니다.

 

set()  사용

 

import java.util.ArrayList;

public class ArrayListTest {
    public static void main(String[] args) {
        ArrayList<String> names = new ArrayList<>();
        // add() method
        names.add("Sam");
        names.add("George");
        names.add(0, "David");
        names.add("Sally");

        // set() method
        names.set(0, "Daniel");

        System.out.println(names);
    }
}

// 결과
// [Daniel, Sam, George, Sally]

 

set() 메서드 사용으로 가장 앞 index:0의 David에서 Daniel로 변경됩니다.

중간에 데이터를 변경 없이 insert를 해야 할 경우 ArrayList보다는 LinkedList를 활용하는 것이 좋은 방법입니다.

 

ArrayList 값 삭제

 

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

 

ArrayList에 값을 제거하려면 ArrayList의 remove(index) 메서드를 사용하면 됩니다. remove() 함수를 사용하여 특정 인덱스의 객체를 제거하면 바로 뒤 인덱스부터 마지막 인덱스까지 모두 앞으로 1씩 당겨집니다. ArrayList 안의 내용을 전체 제거하려면 clear() 메서드 메서드를 사용하면 됩니다.

 

ArrayList 크기 구하기

 

ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3));
System.out.println(list.size()); //list 크기 : 3

 

ArrayList의 크기를 구하려면 ArrayList의 size() 메서드를 사용하면 됩니다.

 

ArrayList 값 출력

 

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

System.out.println(list.get(0));//0번째 index 출력
		
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의 값이 리턴됩니다. 전체 출력은 대부분 for문을 통해서 출력을 하고 iterator를 사용해서 출력을 할 수도 있습니다.

 

ArrayList 값 검색

 

ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3));
System.out.println(list.contains(1)); //list에 1이 있는지 검색 : true
System.out.println(list.indexOf(1)); //1이 있는 index반환 없으면 -1

 

ArrayList에서 찾고자 하는 값을 검색하려면 ArrayList의 contains(value) 메서드를 사용하면 됩니다. 만약 값이 있다면 true가 리턴되고 값이 없다면 false가 리턴됩니다.

값이 존재하는 index를 찾으려면 indexOf(value) 메서드를 사용하면 되고 만약 값이 존재하지 않을 경우 -1을 리턴합니다.

반응형

댓글