본문 바로가기
개인공부

collection / ArrayList

by 리승우 2022. 8. 15.

> 컬렉션 (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

댓글