본문 바로가기
BackEnd/Java

[Java] ArrayList

by summer_light 2021. 7. 15.

ArrayList

ArrayList는 List 인터페이스의 구현체이다.

객체가 인덱스로 관리되므로 순서가 있고, 중복을 허용하는 점에서 Array와 유사한 점이 있지만,

Array는 크기가 고정되어 크기 변경이 불가한 반면에,

ArrayList는 크기 변경이 가능하다는 면에서 가장 큰 차이점이 있다.

ArrayList는 저장 용량을 초과한 객체가 들어오면 자동으로 저장용량을 늘린다. 




ArrayList 선언하기 

  1. ArrayList<자료형> 객체명 = new ArrayList<자료형>();
    ArrayList<Integer> al = new ArrayList<Integer>();
  2. ArrayList<자료형> 객체명 = new ArrayList<자료형>(다른 ArrayList)
    public class List03 {
    	public static void main(String[] args) {
    		
    		ArrayList<String> al01 = new ArrayList<String>();
    		al01.add("홍길동");
    		al01.add("김길동");
    		al01.add("이길동");
    		al01.add("박길동");
    		al01.add("최길동");
    		
    		System.out.println(al01);//[홍길동, 김길동, 이길동, 박길동, 최길동]
    		
    		//al02소스로 al01이 와도 값만 가져간다.
    		ArrayList<String> al02 = new ArrayList<String>(al01);
    		al02.add("황길동");
    		System.out.println(al02);//[홍길동, 김길동, 이길동, 박길동, 최길동, 황길동]
    		
    		System.out.println(al01 == al02);//두 객체는 다른 객체. false
    		
    	}
    }​

 


값 추가하기

.add(입력값);

index 0부터 차례대로 값이 추가 됨

al.add(10);//index 0
al.add(20);//1
al.add(30);//2
al.add(40);//3
al.add(50);//4

 


값 호출하기

.get(인덱스);

String str = al.get(0);
String str2 = al.get(3);

 

 

 

 

특정 인덱스의 값 삭제

.remove(index) 

al.remove(0);
//[20, 30, 40, 50]

 


특정 인덱스에 추가 

.add(인덱스, 값)

al.add(0, 1000);
System.out.println(al);//[1000, 20, 30, 40, 50]

 


특정 인덱스 수정

.set(인덱스, 수정할 값)

al.set(al.size() - 1, 5000);
System.out.println(al);//[1000, 20, 30, 40, 5000]

 


그 값이 있는지 찾기

.contains(찾는 값)

  • 있다면: true 반환
  • 없다면: false 반환
System.out.println(al.contains(30));//true
System.out.println(al.contains(50));//false

 

 

찾는 값의 인덱스 반환

indexOf(찾는 값) 

찾는 값이 없다면 -1 반환 

System.out.println(al.indexOf(30));//index 2
System.out.println(al.indexOf(50));//-1 없을경우

 


비어있는지 확인

.isEmpty()

al.isEmpty();



EX01. ArrayList에 랜덤 값 저장하기 

  • 오름차순 정렬: Collections.sort(객체명);
  • 무작위로 섞기: Collections.shuffle(객체명);
package collection.list;

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

public class List04 {
	public static void main(String[] args) {
		
		ArrayList<Integer> al = new ArrayList<Integer>();
		for (int i = 0; i < 10; i++) {
			al.add((int)(Math.random() * 100 + 1));
		}
		System.out.println(al);//[16, 39, 23, 57, 57, 65, 36, 36, 88, 18]
		
		//오름차순 정렬
		//Collections.sort(객체명);
		Collections.sort(al);
		System.out.println(al);//[16, 18, 23, 36, 36, 39, 57, 57, 65, 88]
		
		//무작위로 섞기
		//Collections.shuffle(객체명);
		Collections.shuffle(al);
		System.out.println(al);//[23, 65, 57, 88, 16, 36, 39, 57, 18, 36]
		
		//또다시 바퀴를 발명하지 마라.
	}
}

 

EX02. InnerList

ArrayList 안에 ArrayList 넣기 

[1, 2, 3]

[4, 5, 6]

[7, 8, 9] 출력

		ArrayList<ArrayList<String>> list = new ArrayList<ArrayList<String>>();
		ArrayList<String> innerList = new ArrayList<String>();
		innerList.add("1");
		innerList.add("2");
		innerList.add("3");
		list.add(innerList);
		
		innerList = new ArrayList<String>();
		innerList.add("4");
		innerList.add("5");
		innerList.add("6");
		list.add(innerList);
		
		innerList = new ArrayList<String>();
		innerList.add("7");
		innerList.add("8");
		innerList.add("9");
		list.add(innerList);
		
		for (ArrayList<String> in: list) {
			System.out.println(in);
		}

출력결과

[1, 2, 3]
[4, 5, 6]
[7, 8, 9]

 

※ innerList = new ArrayList<String>(); 을 사용하지 않는다면,

[7, 8, 9]

[7, 8, 9]

[7, 8, 9] 와 같이 출력된다.

 

'BackEnd > Java' 카테고리의 다른 글

[Java] VirtualBox 설치  (0) 2021.07.19
[Java] Linked List  (0) 2021.07.18
[Java] 제네릭 Generic  (0) 2021.07.14
[Java] 컬렉션 Collection  (0) 2021.07.14
[Java] 랩퍼클래스 Wrapper Class  (0) 2021.07.13

댓글