> 컬렉션 (collection)
여러 객체(데이터)를 모아놓은 것을 의미
> 프레임웍 (framework)
표준화, 정형화된 체계적인 프로그래밍 방식
> 컬렉션 프레임웍(collections framework)
컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식
컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공
java.tuil패키지에 포함. JDK1.2부터 제공
> 컬렉션 클래스(collection class)
다수의 데이터를 저장할 수 있는 클래스
----------------------------------------------------------------------------
컬렉션 프레임웍의 핵심 인터페이스
> List
=> 순서 O / 중복 O
순서가 있는 데이터의 집합, 데이터의 중복을 허용한다
예) 대기자 명단
구현클래스) ArrayList, LinkedList, Stack, Vector 등
> Set
=> 순서 X / 중복 X
순서를 유지하지 않는 데이터의 집합, 데이터의 중복을 허용하지 않는다
예) 양의 정수집합, 소수의 집합구현클래스) HashSet, TreeSet 등
> Map
=> 순서 X / 키 중복 X, 값 중복 O
키와 값의 쌍으로 이루어진 데이터의 집합
순서는 유지되지 않으며, 키는 중복을 허용하지 않고 값은 중복을 허용한다.
예) 우편번호, 지역번호(전화번호)
구현클래스) HashMap, TreeMap, Hashtable, Properties 등
ArrayList
> 기존의 vector를 개선한 것으로, 구현원리와 기능적으로 동일
> ArrayList와 달리 Vector는 자체적으로 동기화 처리가 되어 있다.
> List인터페이스를 구현하므로, 저장순서가 유지되고 중복을 허용한다
> 데이터(객체)의 저장공간으로 배열을 사용한다 (배열기반)
ArrayListd의 메서드
생성자
> ArrayList()
> ArrayList(Collection c)
> ArrayList(int initialCapacity)
추가메서드
boolean add(Object o) > 성공하면 객체추가, 실패하면 추가안함
void add(int index, Object element) > 인덱스 저장위치를 지정하고 객체 저장
boolean addAll(Collection c) > 컬렉션을 주면 그 컬렉션이 가지고 있는 요소를 그대로 저장
boolean addAll(int index, Collection c) > 위와 동일, 인덱스 저장위치를 지정하고 저장하는 것
삭제
> 자료화면 대체
검색
> 자료화면 대체
예시
import java.util.*;
public class ex11_1 {
public static void main(String[] args) {
// 기본 길이 (용량, capacity)가 10인 ArrayList를 생성
ArrayList list1 = new ArrayList(10);
// ArrayList에는 객체만 저장가능
// autoboxing에 의해 기본형이 참조형으로 자동변환
// list1.add(new Interger(5));
list1.add(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(Collecction c)
ArrayList list2 = new ArrayList(list1.subList(1, 4));
// 풀어쓰면 아래 두 줄과 같음
// List sub = list1.subList(1,4); // sub은 읽기만 가능 [4,2,0]
// ArrayList list2 = new ArrayList(sub) // sub와 같은 내용의 ArrayList 생성
print(list1, list2);
// 출력값
list1:[5, 4, 2, 0, 1, 3]
list2:[4, 2, 0]
//정렬하는 메소드
// Collctions은 인터페이스, Collections는 유틸 클래스
Collections.sort(list1); // list1과 list2를 정렬한다.
Collections.sort(list2); // Collections.sort(list 1)
print(list1, list2);
// 출력값
list1:[0, 1, 2, 3, 4, 5]
list2:[0, 2, 4]
//list1에서 list2의 모든 요소를 포함하고 있는가?
System.out.println("list1.containsAll(list2):" + list1.containsAll(list2));
// 출력값
list1.containsAll(list2):true
list2.add("B");
list2.add("C");
list2.add(3,"A"); //3번째 자리에 A를 집어넣는다. 그러면 B값이 밀려남
print(list1,list2);
// 출력값
list1:[0, 1, 2, 3, 4, 5]
list2:[0, 2, 4, A, B, C]
//변경
list2.set(3, "AA");
print(list1, list2);
// 출력값
list1:[0, 1, 2, 3, 4, 5]
list2:[0, 2, 4, AA, B, C]
// 데이터 추가 및 위치찾기
list1.add(0,"1");
// indexOf()는 지정된 객체의 위치(인덱스)를 알려준다.
// ▼ list1에서 "1" 문자열이 어디있는이 알려준다
System.out.println("index="+ list1.indexOf("1"));
print(list1, list2);
// 출력값
index=0
list1:[1, 0, 1, 2, 3, 4, 5]
list2:[0, 2, 4, AA, B, C]
//삭제
list1.remove(0); //0번째 인덱스 삭제
list1.remove(new Integer(5)); // 5값을 갖고있는 객체 삭제
print(list1, list2);
// 출력값
list1:[0, 1, 2, 3, 4]
list2:[0, 2, 4, AA, B, C]
}
//main 끝
static void print(ArrayList list1, ArrayList list2) {
System.out.println("list1:"+list1);
System.out.println("list2:"+list2);
System.out.println();
}
} // class 끝
ArrayList에 저장된 객체의 삭제과정
'개인공부' 카테고리의 다른 글
Stack & Queue (0) | 2022.08.15 |
---|---|
LinkedList (0) | 2022.08.15 |
익명클래스 (0) | 2022.08.15 |
내부클래스 (0) | 2022.08.15 |
달팽이 별찍기 문제 (0) | 2022.08.13 |
댓글