JAVA/JAVA2

[java2] #31 - ArrayList (개념/사용법)

yoonddo 2022. 11. 15. 19:25

ArrayList

Collection 프레임워크의 일부이며 java.util 패키지에 소속되어있다.

출처 https://crazykim2.tistory.com/558

표준 배열보다는 느리지만 배열에서 많은 조작이 필요한 경우 유용하게 사용할 수 있다.

List 인터페이스에서 상속받아 사용된다. ArrayList는 객체가 추가되어 용량을 초과하면 자동으로 부족한 크기만큼 용령이 늘어난다.

출처 https://crazykim2.tistory.com/558


ArrayList 선언

주로 <Integer>타입으로 선언을 많이하고, 추가로 다른 타입(String, Character) 등의 타입으로 선언이 가능하다

타입을 선언하면 해당 타입의 데이터만 추가가 가능하고 ArrayList를 선언하면서 초기용량 및 초기값을 세팅할 수 있다.

ArrayList list = new ArrayList(); // 타입 설정x Object로 사용
ArrayList<ArrayListDemo> demo = new ArrayList<ArrayListDemo>(); // 타입설정 ArrayListDemo 객체로 선언
ArrayList<Integer> i = new ArrayList<Integer>(); // int 타입으로 선언
ArrayList<Integer> i2 = new ArrayList<>(); // Integer 타입 사용
ArrayList<Integer> i3 = new ArrayList<Integer>(10); // 초기 용량 세팅
ArrayList<Integer> i4 = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4)); // 초기 값 세팅
		
ArrayList<String> s = new ArrayList<String>(); // String 타입 사용
ArrayList<Character> ch = new ArrayList<Character>(); // char 타입 사용

ArrayList 값 추가

ArrayList의 값을 추가하기 위해서는 add() 메서드를 사용하며 add()의 사용법에는 두 가지가 있다.

  • add(Object) : ArrayList의 마지막에 데이터 추가
  • add(int index, Object) : ArrayList의 index에 데이터 추가

예시

import java.util.ArrayList;

public class ArrayListDemo {
	public static void main(String[] args)  {
		ArrayList<String> al = new ArrayList<>();
		
		al.add("Hello");
		al.add("Hello");
		al.add(1, "World");
		
		System.out.print(al);
	}
}

결과 : [Hello, World, Hello]


ArrayList 값 변경

ArrayList 값 변경은 set() 메서드를 사용하며 set()을 사용하기 위해서는 데이터의 위치Index를 알아야

변경이 가능하다.

  • set(int index, Object)를 사용한다.

예시

import java.util.ArrayList;

public class ArrayListDemo {
	public static void main(String[] args)  {
		ArrayList<String> al = new ArrayList<>();
		
		al.add("Hello");
		al.add("Hello");
		al.add("Hello");
		
		System.out.println("초기값 : " + al);
		
		al.set(1, "World");

		System.out.println("변경된 값 : " + al);
	}
}

결과 

초기값 : [Hello, Hello, Hello]

변경된 값 : [Hello, World, Hello]


ArrayList 값 삭제

ArrayList 값을 삭제하는 방법에는 remove()와 clear()가 있으며 clear()는 ArrayList의 모든 값을 삭제할 때 사용되고

remove()는 값을 하나씩 제거할 때 사용된다.

remove()는 두 개의 사용법이 있는데

  1. remove(Object) : Object를 파라미터로 넘기는 경우 해당 ArrayList의 Object와 같은 값을 삭제하고
    만약 같은 값이 두 개인 경우 첫 번째 같은 값을 제거한다.
  2. remove(int index) : ArrayList의 index에 해당하는 값을 삭제한다.

예시

import java.util.ArrayList;

public class ArrayListDemo {
	public static void main(String[] args)  {
		ArrayList<String> al = new ArrayList<>();
		
		al.add("Hello");
		al.add("World");
		al.add("Hello");
		al.add("World");
		
		System.out.println("초기값 : " + al);
		
		al.remove("Hello");

		System.out.println("1번 삭제 : " + al);

		al.remove(1);

		System.out.println("2번 삭제 : " + al);
		
		al.clear();

		System.out.println("3번 삭제 : " + al);
	}
}

결과

초기값 : [Hello, World, Hello, World]

1번 삭제 : [World ,Hello, World] 

2번 삭제 : [World, World]

3번 삭제 : []


ArrayList 크기 구하기

ArrayList의 크기를 구하는 방법은 size() 메서드를 사용하여 구할 수 있다.

import java.util.ArrayList;

public class ArrayListDemo {
	public static void main(String[] args)  {
		ArrayList<String> al = new ArrayList<>();
		
		al.add("Hello");
		al.add("World");
		al.add("Hello");
		al.add("World");
		
		System.out.println("ArrayList의 크기 : " + al.size());
	}
}

결과

ArrayList의 크기 : 4


ArrayList 값 출력

ArrayList의 결과를 출력하는 방법에는 get(int Index) 메서드가 있고 Index를 입력하면 해당 Index의 데이터가 출력된다

전부 출력하고 싶다면 for문과 향상된for문을 사용하여 출력 가능하며 추가로 Iterator를 사용하여 출력을 할 수도 있다

 

예시

import java.util.ArrayList;
import java.util.Iterator;

public class ArrayListDemo {
	public static void main(String[] args)  {
		ArrayList<String> al = new ArrayList<>();
		
		al.add("Hello");
		al.add("World");
		al.add("Hello");
		al.add("World");
		
		for (int i = 0; i < al.size(); i++) {			  
            System.out.print(al.get(i) + " ");
        }
  
        System.out.println();
  
        for (String str : al)
            System.out.print(str + " ");

        System.out.println();
        
        Iterator iter = al.iterator();
        while(iter.hasNext()){
            System.out.print(iter.next() + " ");
        }
	}
}

결과

Hello World Hello World

Hello World Hello World

Hello World Hello World


ArrayList 값 검색

값을 검색하는 방법에는 contains와 indexOf가 있고 두 개가 비슷하지만 용도가 약간 다르다.

contains는 값이 있는지 여부만 파악하고 indexOf를 사용하면 값의 위치Index를 찾아주고 값이 없다면 -1을 출력한다.

 

예시

import java.util.ArrayList;

public class ArrayListDemo {
	public static void main(String[] args)  {
		ArrayList<String> al = new ArrayList<>();
		
		al.add("Hello");
		al.add("World");
		al.add("Hello");
		al.add("World");
		
		System.out.println("값 검색(contains) : " + al.contains("Hello"));
		System.out.println("값 검색(indexOf) : " + al.indexOf("World"));
	}
}

결과

값 검색 (contains) : true

값 검색 (indexOf) : 1

 

 

 

 

 

 

 

 

 

 

 

 

참고 출처 :https://crazykim2.tistory.com/558