티스토리 뷰

반응형

안녕하세요. 이번 포스팅에서는 자바 자료구조 중 하나인 ArrayList의 사용법에 대해서 알아보겠습니다.


1. ArrayList 생성

ArrayList는 java.util.ArrayList에 포함되어 있으므로 아래와 같이 import 시켜줍니다.

 

import java.util.*

import java.util.ArrayList

 

import 하였다면 아래와 같이 ArrayList 객체를 생성해줍니다.

 

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

 

자바에서 배열을 선언하는 것처럼 List의 Size를 초기화해줄 필요가 없습니다. 배열처럼 고정된 크기를 가지는 것이 아니라 메모리가 허용하는 한 자동으로 ArrayList 크기는 동적으로 변경됩니다. 그럼 이제부터 ArrayList에서 제공하는 메소드를 활용하여 데이터를 관리하는 방법에 대해 알아보겠습니다.


2. ArrayList 데이터 추가하기 - Add 메소드

ArrayList에 데이터를 추가하는 방법은 add 메소드를 활용하는 방법입니다. add 메소드를 사용하는 방식은 두 가지로 인자 정보를 하나만 넘기는 경우와 두 개를 넘기는 방법이 있습니다. 

 

boolean add(E e)

void add(int index, E element)

 

첫 번째 방식은 Element 값만 넘기는 방식입니다. 이때는 List의 맨 마지막 위치에 데이터가 들어갑니다. 두 번째 방식은 추가할 Element 값과 데이터가 들어갈 특정 위치를 지정할 수 있습니다. 아래 샘플 예제를 살펴보겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.*;
 
public class Sample
{
    public static void main(String[] args)
    {
        ArrayList<Integer> arrayList = new ArrayList<>();
 
        arrayList.add(0);
        arrayList.add(1);
        arrayList.add(2);
        arrayList.add(3);
        arrayList.add(4);
 
        for(int i : arrayList)
        {
            System.out.println("값 : " + i );
        }
    }
}
cs

 

▼ 데이터 추가는 ArrayList의 add 메소드를 통해 추가할 수 있습니다. 따로 위치를 지정하지 않았으므로 데이터는 순서대로 0, 1, 2, 3, 4가 List에 들어가게 됩니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.*;
 
public class Sample
{
    public static void main(String[] args)
    {
        ArrayList<Integer> arrayList = new ArrayList<>();
 
        arrayList.add(0);
        arrayList.add(1);
        arrayList.add(2);
        arrayList.add(3);
        arrayList.add(4);
 
        arrayList.add(1,10);
 
        for(int i : arrayList)
        {
            System.out.println("값 : " + i );
        }
    }
}
cs

 

▼ 위 예제에서 15번 라인이 추가되었습니다. 마찬가지로 add 메소드를 사용하였는데 인자로 index를 추가로 넘기고 있습니다. ArrayList에서 index 1에 해당하는 위치에 데이터 10을 넣으라는 의미로 해석할 수 있습니다. 뒤에 Element 들은 자동으로 뒤로 밀리게 됩니다.

 


3. ArrayList 데이터 추가하기 - addAll 메소드

addAll 메소드를 통해 ArrayList에 ArrayList를 추가할 수 있습니다. 메소드를 사용하는 방식은 add 메소드와 마찬가지로 두 가지가 있으며 인자 정보를 하나만 넘기는 경우와 두 개를 넘기는 경우가 있습니다.

 

boolean addAll(Collection<? extends E> c)

boolean addAll(int index, Collection<? extends E> c)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.util.*;
 
public class Sample
{
    public static void main(String[] args)
    {
        ArrayList<Integer> arrayList = new ArrayList<>();
        ArrayList<Integer> arrayList2 = new ArrayList<>();
 
        arrayList.add(1);
        arrayList.add(2);
        arrayList.add(3);
 
        arrayList2.add(10);
        arrayList2.add(30);
        arrayList2.add(20);
 
        arrayList.addAll(arrayList2);
 
        for(int i : arrayList)
        {
            System.out.println(i);
        }
    }
}
cs

 

▼ arrayList를 arrayList와 arrayList2 두 개를 생성하였고 add 메소드를 통해 데이터를 넣었습니다.그런 다음 18 Line에서 addAll 메소드를 통해 arrayList에 arrayList2에 있는 데이터를 추가해주는 예제입니다. addAll 메소드 2번째 방식은 앞에 add 메소드 방식을 이해하셨다면 따로 설명하지 않아도 동작을 이해 하실 거로 생각합니다.


4. ArrayList 데이터 제거하기

ArrayList에서 특정 데이터를 제거할 수 있습니다.

 

boolean remove(int index)

 

remove 메소드를 통해 특정 index의 element를 제거할 수 있습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.*;
 
public class Sample
{
    public static void main(String[] args)
    {
        ArrayList<Integer> arrayList = new ArrayList<>();
        ArrayList<Integer> arrayList2 = new ArrayList<>();
 
        arrayList.add(1);
        arrayList.add(2);
        arrayList.add(3);
        arrayList.add(4);
        arrayList.add(5);
 
        arrayList.remove(1);
    }
}
cs

 

▼ 16 Line에서 remove 메소드를 통해 index 1에 해당하는 element를 제거하는 예제입니다. 중간에 element가 제거되면 ArrayList는 자동으로 size가 조절됩니다.


5. ArrayList로부터 특정 데이터 가져오기

ArrayList로부터 특정 데이터를 가져오는 것이 가능합니다.

 

E get(int index)

List<E> subLit(int fromIndex, int toIndex)

 

첫 번째 get 메소드를 통해 element 하나를 가지고 오는 방식이 있습니다. 두 번째로 index 범위를 지정하여 List로 가지고 오는 방식이 있습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import java.util.*;
 
public class Sample
{
    public static void main(String[] args)
    {
        ArrayList<Integer> arrayList = new ArrayList<>();
 
        arrayList.add(1);
        arrayList.add(2);
        arrayList.add(3);
        arrayList.add(4);
        arrayList.add(5);
 
        List<Integer> list = arrayList.subList(1,3);
 
        for(int i : arrayList)
        {
            System.out.println("arrayList : " + i);
 
        }
 
        System.out.println("------------------------");
 
        for(int i : list)
        {
            System.out.println("subList 메소드로 가져온 List : " + i);
        }
    }
}
cs

 

▼ 15 Line에서 arrayList로부터 index 범위 1~3에 해당하는 element들을 List 형태로 반환받아서 출력하는 예제입니다. 주의할 것은 index 범위가 1~3까지 지정이 되었지만 toIndex 앞까지에 해당하는 element까지만 반환한다는 것입니다. 

 

반응형