티스토리 뷰
내장된 ArrayList의 사용법
생성
ArrayList를 사용하기 위해서는 우선 ArrayList 객체를 만들어야 합니다.
1 | ArrayList<Integer> numbers = new ArrayList< Integer>(); |
ArrayList는 java.util.ArrayList에 포함되어 있기 때문에 import를 해주셔야 합니다.
1 | import java.util.ArrayList; |
추가
엘리먼트를 추가 할 때는 add 메소드를 사용합니다. add는 배열에 단순히 더해지는 것이기 때문에 빠르게 동작합니다.
1 2 3 4 | numbers.add(10); numbers.add(20); numbers.add(30); numbers.add(40); |
특정 위치에 추가하고 싶다면 메소드 add의 첫번째 인자로 인덱스를 지정합니다.
1 | numbers.add( 1 , 50 ); |
자바의 배열은 크기가 고정되어 있습니다. 데이터를 추가하는 과정에서 내부적으로 사용하는 배열이 꽉차면 기존의 배열 대비 크기가 2배 큰 새로운 배열을 만들고 기존의 데이터를 새로운 배열로 복제합니다. 덕분에 프로그래머는 ArrayList의 크기에 신경쓰지 않고 편리하게 프로그램을 만들 수 있습니다. 하지만 배열의 크기를 키우는 과정에서 많은 부하가 발생합니다. 이런 기능은 List 데이터 스트럭쳐의 본질적인 기능이라고 할 수는 없습니다. 따라서 우리 수업에서는 다루지 않습니다. 궁금하신 분은 Dynamic Array를 참고해주세요.
삭제
특정 인덱스에 위치하는 엘리먼트를 삭제할 때는 remove를 사용합니다.
1 | numbers.remove( 2 ); |
가져오기
엘리먼트를 가져올 때는 get을 사용합니다. 이때 내부적으로 배열을 이용하기 때문에 매우 빠르게 엘리먼트를 가져올 수 있습니다.
1 | numbers.get( 2 ); |
반복
자바에서는 ArrayList를 탐색하기 위한 방법으로 iterator을 제공합니다. 이것은 주로 객체지향 프로그래밍에서 사용하는 반복기법입니다. 우선 Iterator 객체를 만들어야 합니다.
1 | Iterator it<Integer> = numbers.iterator(); |
Iterator 객체는 numbers 객체 내부에 저장된 값을 하나씩 순회하면서 탐색할 수 있도록 돕는 객체입니다.
1 2 3 | while (it.hasNext()){ System.out.println(it.next()); } |
it.next() 메소드를 호출할 때마다 엘리먼트를 순서대로 리턴합니다. 만약 더 이상 순회할 엘리먼트가 없다면 it.hasNext()의 값은 false가 되면서 while문이 종료 됩니다.
단순 출력을 위해서 순회를 하지는 않겠지요? 순회 과정에서 필요에 따라서는 엘리먼트를 삭제/추가하는 작업을 해야 할 것입니다. 그런 경우 아래와 같이 처리할 수 있습니다.
1 2 3 4 5 6 | while (it.hasNext()){ int value = it.next(); if (value == 30 ){ it.remove(); } } |
it.remove()는 it.next()를 통해서 반환된 numbers의 엘리먼트를 삭제하는 명령입니다.
조금 더 편리한 방법도 있습니다.
1 2 3 | for ( int value : numbers){ System.out.println(value); } |
전체코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | package list.arraylist.api; import java.util.ArrayList; import java.util.Iterator; public class Main { public static void main(String[] args) { ArrayList<Integer> numbers = new ArrayList< Integer>(); numbers.add( 10 ); numbers.add( 20 ); numbers.add( 30 ); numbers.add( 40 ); System.out.println( "add(값)" ); System.out.println(numbers); numbers.add( 1 , 50 ); System.out.println( "\nadd(인덱스, 값)" ); System.out.println(numbers); numbers.remove( 2 ); System.out.println( "\nremove(인덱스)" ); System.out.println(numbers); System.out.println( "\nget(인덱스)" ); System.out.println(numbers.get( 2 )); System.out.println( "\nsize()" ); System.out.println(numbers.size()); System.out.println( "\nindexOf()" ); System.out.println(numbers.indexOf( 30 )); Iterator it = numbers.iterator(); System.out.println( "\niterator" ); while (it.hasNext()) { int value = ( int ) it.next(); if (value == 30 ) { it.remove(); } System.out.println(value); } System.out.println(numbers); System.out.println( "\nfor each" ); for ( int value : numbers) { System.out.println(value); } System.out.println( "\nfor" ); for ( int i = 0 ; i < numbers.size(); i++) { System.out.println(numbers.get(i)); } } } |
출처 : https://opentutorials.org/module/1335/8711
'Computer > JAVA' 카테고리의 다른 글
[Eclipse] WindowBuilder Java GUI(AWT,SWT,Swing) Tool (0) | 2017.03.11 |
---|---|
JavaService 자바프로그램 부팅시 자동실행 (0) | 2017.02.28 |
Java 문자열 숫자 자료형 변환 (0) | 2016.11.14 |
[Java] Bluetooth Examples for javax.bluetooth.DiscoveryAgent (0) | 2015.05.18 |
JNA (Java Native Access) (0) | 2015.03.14 |