JAVA/JAVA2

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

yoonddo 2022. 7. 19. 18:11

ArrayList란

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

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

 - List 인터페이스에서 상속받아 사용되며 객체가 추가되어 용량을 초과하면 자동으로 부족한 크기만큼

   용량이 늘어난다.

 

선언 방법

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

   타입을 선언하면 해당 타입의 데이터만 추가 할 수 있다.


ArrayList 값 추가하기

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

add() 사용법
add(Object) add(int index, Object)
ArrayList의 마지막에
데이터를 추가한다.
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 값 변경하기

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 값 삭제하기

삭제하는 방법에는 remove()와 clear()가 있다.

clear()는 ArrayList의 모든 값을 삭제할 때, remove()는 값을 하나씩 제거할 때 사용되는데

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

 

remove(Object) Object를 파라미터로 넘기는 경우에 해당되며 ArrayList의 Object와 같은 값을 삭제한다.
만약 같은 값이 두 개인 경우 첫 번째 같은 값을 제거한다.
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);
	}
}

결과는 

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

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

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


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());
	}
}

결과는

데이터를 4개 추가했기 때문에 4 출력


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 값 검색하기

값을 검색하는 방법엔 containsindexOf가 있다.

두 개는 비슷하지만 용도가 약간 다르다.

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

출력


package day05;

import java.util.ArrayList;
import java.util.Collections;

public class ArrayListTest {
	public static void main(String[] args) {

		ArrayList<Integer> dataList = new ArrayList<>();
//		dataList.add(10);
//		System.out.println(dataList.size());
		dataList.add(10);
		dataList.add(80);
		dataList.add(90);
		dataList.add(30);
		dataList.add(20);
		dataList.add(50);
		dataList.add(40);

//for(int data : dataList) {
//	System.out.println(data);
//	}

		// 주소를 전달하여 받은 sort쪽에서는 직접 그 주소의 값들을 변경한다.
		// 따라서 sort메소드를 실행만 해도 그 다음 줄 부터는 변경된 값을 확인할 수 있다.
//		Collections.sort(dataList);//데이터들을 정렬한다.
		Collections.shuffle(dataList);//실행할 때마다 순서가 바뀐다.
//		System.out.println(dataList);
		dataList.add(dataList.indexOf(30)+1,100);
		dataList.add(dataList.indexOf(90)+2,70);
	System.out.println(dataList);
	}
}

 

 

 

 

 

해당 블로그를 많이 참고했습니다.

https://crazykim2.tistory.com/558#text8 

'JAVA > JAVA2' 카테고리의 다른 글

[java2] #16 - HashSet  (0) 2022.07.26
[java2] #15 - HashMap  (0) 2022.07.25
[java2] #13 - Wrapper Class (래퍼 클래스)  (0) 2022.07.19
[java2] #12 - 빠른(향상된) for문  (0) 2022.07.19
[java2] #11 - Object, equals(), hashCode()  (0) 2022.07.19