[자바] ArrayList

Dragony·2020년 6월 11일
0

자바

목록 보기
3/4

List 자료형에는 ArrayList, LinkedList 등의 List 인터페이스를 구현한 자료형이 있다. 여기서 말하는 List 자료형은 인터페이스인데 인터페이스에 대해서는 뒤에서 자세히 다루도록 한다.

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


import java.util.*;

혹은

import java.util.ArrayList;

ArrayList는 배열과 비슷한 자바의 자료형으로 배열보다 편리한 기능을 많이 가지고 있다.
다음과 같이 선언해 줄 수 있다.


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

참고로 배열은 int[] a = new int[길이]; 혹은 int[] a = {1,2,3,4,5} 등으로 저장한다.

자바에서 배열을 선언하는 것 처럼 크기를 초기화해 줄 필요가 없다. 배열처럼 고정된 크기를 가지는 것이 아니라 메모리가 허용하는 한 자동으로 ArrayList 크기는 동적으로 변경된다.

add 메소드

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

  • boolean add(E e)
  • void add(int index, E element)

인자 정보를 하나만 넘기는 방식 - Element 값만 넘기는 방식

이때는 List의 맨 마지막 위치에 데이터가 들어간다.

인자 정보를 두 개 넘기는 방식 - Element 값과 특정 위치 지정

추가할 element 값과 데이터가 들어갈 특정 위치를 지정할 수 있다.


package com.javaproject.second;

import java.util.*;

public class Tryfirst {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		ArrayList<Integer> al = new ArrayList<>();
		
		al.add(0);
		al.add(1);
		al.add(2);
		al.add(1,10);
		
		for(int i : al) {
			System.out.println("값: "+i);
		}
		
		

	}

}

이렇게 되면 결과는 0 10 1 2 가 된다.
index 1이 해당하는 위치에 데이터 10을 넣고 뒤에 있는 원소들은 자동으로 뒤로 밀린다.

addAll 메소드

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

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


package com.javaproject.second;

import java.util.*;

public class Tryfirst {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		ArrayList<Integer> al = new ArrayList<>();
		ArrayList<Integer> a2 = new ArrayList<>();
		
		al.add(0);
		al.add(1);
		al.add(2);
		al.add(1,80);
		
		a2.add(10);
		a2.add(20);
		a2.add(30);
	
		al.addAll(1, a2);
		
		for(int i : al) {
			System.out.println("값: "+i);
		}
		

	
	}

}

결과는


값: 0
값: 10
값: 20
값: 30
값: 80
값: 1
값: 2

이렇게 나온다.

remove 메소드

remove 메소드를 통해 ArrayList에서 특정 데이터를 제거할 수 있다.

  • boolean remove(int index)

index에 해당하는 위치에 있는 원소가 제거되고 사이즈는 자동으로 조절된다. (다 땡겨짐)

get 메소드 - ArrayList로부터 특정 데이터 가져오기

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

  • E get(int index)
  • List subLit(int fromIndex, int toIndex)

첫번째로, get 메소드를 통해 element 하나를 가지고 오는 방식이 있고
두번째로, indx 범위를 지정하여 List로 가지고 오는 방법이 있다. (리스트 안의 부분만 슬라이싱해오는 방법)

첫번째 방법 예제


		System.out.println(al.get(1));

두번째 방법 예제


package com.javaproject.second;

import java.util.*;

public class Tryfirst {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		ArrayList<Integer> al = new ArrayList<>();
		
		al.add(0);
		al.add(1);
		al.add(2);
		al.add(1,80);
		
		List<Integer> a2 = al.subList(1, 3);
		
		for(int i : al) {		
			System.out.println("a1:" + i);		
		}
		
		for(int i : a2) {
			System.out.println("a2:" + i);
		}
	
	}

}

결과는


a1:0
a1:80
a1:1
a1:2
a2:80
a2:1

마찬가지로 마지막 인덱스는 포함되지 않는다. 그리고 주의할 점은 리스트에다 받아와야 한다는 점이다.

size, contains

size 메소드는 ArrayList의 갯수를 리턴한다.
contains 메소드는 리스트 안에 항목값이 있는지를 판별하여 그 결과를 boolean으로 리턴한다.

profile
안녕하세요 :) 제 개인 공부 정리 블로그입니다. 틀린 내용 수정, 피드백 환영합니다.

0개의 댓글