반응형

1.2 ArrayList

 

: 가장 많이 사용되는 컬렉션 클래스. 데이터의 저장 순서가 유지되고 중복을 허용한다.

 

기존의 vector를 개선한 것, Object배열을 이용해서 데이터를 순차적으로 저장한다.

 

0번부터 차례로 저장, 더이상 공간이 없으면 새로운 배열을 생성하여 기존배열에 저장된 내용을 복사 한 후 저장된다.

 

public class arrayList extends AbstractList

implements List, RandomAccess, Cloneable, java.io.Serializable

{

transient Object[] elementData;

}

 

ArrayList 제공 메서드

- ArrayList() : 크기가 0인 ArrayList를 생성

- ArrayList(Collection c) : 주어진 컬렉션이 저장된 ArrayList를 생성 

- ArrayList(int initialCapacity) : 지정된 초기 용량을 갖는 ArrayList를 생성

- ArrayList(int initialCapacity, int capacityincrement) : 지정된 초기 용량과 용량의 증분을 갖는 ArrayList를 생성

- boolean add(Object o) : ArrayList의 마지막에 객체를 추가, 성공하면 true

- void add(int index, Object element) : 지정된 위치(index)에 객체를 저장

- boolean addAll(Collection c) : 주어진 컬렉션의 모든 객체를 저장한다.

- boolean addAll(int index, Collection c) : 지정된 위치부터 주어진 컬렉션의 모든 객체를 저장한다.

- void clear() : ArrayList를 완전히 비운다.

- Object clone() : ArrayList를 복제한다.

- boolean contains(Object o) : 지정된 객체(o)가 ArrayList에 포함되어 있는지 확인.

- void ensureCapacity(int minCapacity) : ArrayList의 용량이 최소한 minCapacity가 되도록 한다.

- Object get(int index) : 지정된 위치(index)에 저장된 객체를 반환한다.

- int indexOf(Object o) : 지정된 객체가 저장된 위치를 찾아 반환한다.

- boolean isEmpty() : ArrayList가 비어 있는지 확인한다.

- Iterator iterator() : ArrayList의 Iterator 객체를 반환

- int lastindexOf(Object o) : 객체(o)가 저장된 위치를 끝부터 역방향으로 검색해서 반환

- ListIterator listIterator() : ArrayList의 listIterator를 반환

- ListIterator listIterator(int index) : ArrayList의 지정된 위치부터 시작하는 ListIterator를 반환

- Object remove(int index) : 지정된 위치(index)에 있는 객체를 제거

- boolean remove(Object o) : 지정한 객체를 제거한다.(성공하면 true, 실패하면 false)

- boolean removeAll(Collection c) : 지정한 컬렉션에 저장된 것과 동일한 객체들을 ArrayList에서 제거한다.

- boolean retainAll(Collection c) : ArrayList에 저장된 객체 중에서 주어진 컬렉션과 공통된 것들만을 남기고 나머지는 삭제한다.

- Object set(int index, Object element) : 주어진 객체(element)를 지정된 위치(index)에 저장한다.

- int size() : ArrayList에 저장된 객체의 개수를 반환한다.

- void sort(Comparator c) : 지정된 정렬기준(c)으로 ArrayList를 정렬

- List subList(int fromindex, int toindex) : fromindex부터 toindex사이에 저장된 객체를 반환한다.

- Object[] toArray() : ArrayList에 저장된 모든 객체들을 객체배열로 반환한다.

- Object[] toArray(Object[] a) : ArrayList에 저장된 모든 객체들을 객체배열 a에 담아 반환한다.

- void trimToSize() : 용량을 크기에 맞게 줄인다.(빈공간을 없앤다.)

 

실습 1. 기본적인 ArrayList 메서드 이용하여 객체를 다루는 방법.

 

 

package Collection_Framework;

import java.util.*;

public class ArrayList1 {

 

public static void main(String[] args) {

ArrayList list1 = new ArrayList(10);

list1.add(new Integer(5));

list1.add(new Integer(4));

list1.add(new Integer(2));

list1.add(new Integer(0));

list1.add(new Integer(1));

list1.add(new Integer(3));

 

ArrayList list2 = new ArrayList(list1.subList(1, 4));

print(list1,list2);

 

Collections.sort(list1);

Collections.sort(list2);

print(list1,list2);

 

System.out.println("list1.containsAll(list2):" +list1.containsAll(list2));

list2.add("B");

list2.add("C");

list2.add(3,"A");

print(list1,list2);

 

list2.set(3, "AA");

print(list1, list2);

 

System.out.println("list1.retainAll(list2):"+list1.retainAll(list2));

print(list1,list2);

 

for(int i = list2.size()-1; i>=0;i--) {

 

if(list1.contains(list2.get(i)))

list2.remove(i);

}

 

print(list1,list2);

}

 

static void print(ArrayList list1, ArrayList list2) {

 

System.out.println("list1:" +list1);

System.out.println("list2:" +list2);

System.out.println();

}

}

 

 

 

 

 

출력결과 :

list1:[5, 4, 2, 0, 1, 3]
list2:[4, 2, 0]

list1:[0, 1, 2, 3, 4, 5]
list2:[0, 2, 4]

list1.containsAll(list2):true
list1:[0, 1, 2, 3, 4, 5]
list2:[0, 2, 4, A, B, C]

list1:[0, 1, 2, 3, 4, 5]
list2:[0, 2, 4, AA, B, C]

list1.retainAll(list2):true
list1:[0, 2, 4]
list2:[0, 2, 4, AA, B, C]

list1:[0, 2, 4]
list2:[AA, B, C]


 

실습 2. 긴 문자열 데이터를 원하는 길이로 잘라서 ArrayList에 담은 다음 출력하는 예제.

 

package Collection_Framework;

import java.util.*;

public class ArrayList2 {

 

public static void main(String[] args) {

final int LIMIT = 10;

String source = "0123456789abcdefghijABCDEFGHIJ!@#$%^&*()ZZZ";

int length = source.length();

 

List list = new ArrayList(length/LIMIT +10);

 

for (int i =0; i<length; i+=LIMIT) {

if(i+LIMIT < length)

list.add(source.substring(i, i+LIMIT));

else

list.add(source.substring(i));

}

 

for (int i =0; i<list.size();i++) {

System.out.println(list.get(i));

}

}

 

}

 

 

출력결과 :

0123456789
abcdefghij
ABCDEFGHIJ
!@#$%^&*()
ZZZ

 

실습 3. Vector의 용량과 크기에 관한 예제.

 

 

package Collection_Framework;

import java.util.*;

public class ArrayList3 {

 

public static void main(String[] args) {

Vector v = new Vector(5);

v.add("1");

v.add("2");

v.add("3");

print(v);

 

v.trimToSize();

System.out.println("=== After trimToSize() ===");

print(v);

 

v.ensureCapacity(6);

System.out.println("=== After ensureCapacity(6) ===");

print(v);

 

v.setSize(7);

System.out.println("=== After setSize(7) ===");

print(v);

 

v.clear();

System.out.println("=== After clear() ===");

print(v);

}

 

public static void print(Vector v){

System.out.println(v);

System.out.println("size:"+ v.size());

System.out.println("capacity:"+v.capacity());

}

}

 

 

출력 결과:

[1, 2, 3]
size:3
capacity:5
=== After trimToSize() ===
[1, 2, 3]
size:3
capacity:3
=== After ensureCapacity(6) ===
[1, 2, 3]
size:3
capacity:6
=== After setSize(7) ===
[1, 2, 3, null, null, null, null]
size:7
capacity:12
=== After clear() ===
[]
size:0
capacity:12

 

 

반응형

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

열거형 enums  (0) 2018.03.19
Collection Framwork 1.3 LinkedList  (0) 2018.03.05
java.time 패키지를 이용하여 달력 만들기  (0) 2018.03.05
Collection Framework 1.7 Comparator, Comparable  (0) 2018.02.26
Collection Framework 1.6 Arrays  (2) 2018.02.26

+ Recent posts