JAVA 기초

#5 컬랙션(ArrayList)

Red서카 2022. 10. 8. 15:35

ArrayList란?

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

List 인터페이스에서 상속받아 사용이 됩니다

ArrayList는 객체가 추가되어 용량을 초과하면 자동으로 부족한 크기만큼 용량이 늘어납니다

 

ArrayList 선언하기

ArrayList의 선언방법입니다

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

타입을 선언하면 해당 타입의 데이터만 추가가 가능합니다

ArrayList를 선언하면서 초기용량 및 초기값을 세팅할 수 있는데 아래의 예제를 참고바랍니다

 

public class ArrayListDemo {
    public static void main(String[] args) {
        
        // 타입 설정x Object로 사용
        List list = new ArrayList(); 
        // 타입설정 String 객체로 선언
        List<String> stringList = new ArrayList<String>(); 
        // Integer 타입으로 선언
        List<Integer> integerList1 = new ArrayList<Integer>();  
        // 초기 용량 세팅
        List<Integer> integerList2 = new ArrayList<Integer>(10); 
        // 초기 값 세팅
        List<Integer> integerList3 = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4)); 
    }
}

 

ArrayList 값 추가하기

ArrayList의 값을 추가하기 위해서는 add() 메서드를 사용합니다

add()의 사용법에는 두 가지가 있습니다

add(Object) : ArrayList의 마지막에 데이터를 추가합니다

add(int index, Object) : ArrayList의 index에 데이터를 추가합니다

사용 예제를 통해 사용법을 알아보겠습니다

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

 

결과

"Java", "Hello" 추가하고, 중간 부분에 "World"가 추가된 것을 볼 수 있습니다

[Java,World,Hello]

 

ArrayList 값 변경하기

ArrayList 값 변경은 set() 메서드를 사용합니다

set()을 사용하기 위해서는 바꾸려면 데이터의 위치Index를 알아야 변경이 가능합니다

set(int index, Object)를 사용합니다

 

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

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

결과

"Java", "Hello", "Hello"에서 "Java", "World", "Hello"로 값이 변경되었습니다

초기값 : [Java, Hello, Hello]
변경된 값 : [Java, World, Hello]

 

ArrayList 값 삭제하기

ArrayList 값을 삭제하는 방법에는 remove()와 clear()가 있습니다

clear()는 ArrayList의 모든 값을 삭제할 때 사용됩니다

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

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

remove(Object) : Object를 파라미터로 넘기는 경우 해당 ArrayList의 Object와 같은 값을 삭제합니다

 만약 같은 값이 두 개인 경우 첫 번째 같은 값을 제거합니다

remove(int index) : ArrayList의 index에 해당하는 값을 삭제합니다

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

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

		stringList.remove(1);

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

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

 

결과

1. a1.remove("Hello") 첫 번째 "Hello"가 삭제되어 [World, Hello, World]가 출력됩니다

2. al.remove(1) 두 번째 데이터 "Hello"가 삭제되어 [World, World]가 출력됩니다

3. al.clear() 데이터를 모두 삭제하여 []가 출력됩니다

 

초기값 : [Hello,World,Hello,World]
1번 삭제 : [World,Hello,World]
2번 삭제 : [World,World]
3번 삭제 : []

 

ArrayList 크기 구하기

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

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

결과

데이터를 4개 추가했으므로 결과가 4개 출력됩니다

ArrayList의 크기 : 4

 

ArrayList 값 출력하기

ArrayList의 결과를 출력하는 방법에는 get(int Index) 메서드가 있습니다

Index를 입력하면 해당 Index의 데이터가 출력됩니다

전부 출력하고 싶다면 for문과 향상된for문을 사용하여 출력을 할 수 있습니다

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

        System.out.println();
	}
}

결과

Hello World Hello World
Hello World Hello World

 

ArrayList 값 검색하기

값을 검색하는 방법에는 contains와 indexOf가 있습니다

두 개가 비슷하지만 용도가 약간 틀립니다

contains는 값이 있는지 여부만 파악합니다

indexOf를 사용하면 값의 위치Index를 찾아주고 값이 없다면 -1을 출력합니다

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

결과

값 검색(contains) : true
값 검색(indexOf) : 1
값 검색(indexOf) : -1