/* ========================================================================
■■■ 컬렉션 프레임워크(Collection Framework) ■■■
=========================================================================*/
/*
○ Vector(벡터)
자바의 자료 구조 기능을 제공하는 클래스들 중 가장 기본적인 클래스로
배열과 비슷하지만, 배열과 달리 다른 종류의 데이터 형을 가진
데이터 요소를 가질 수 있으며, 데이터가 가득차면 자동으로 저장 영역을
확장시키게 된다.
또한 객체 레퍼런스를 저장하기 때문에
JDK 1.5 이전에는 자바 기본형 데이터는 저장할 수 없었으나
JDK 1.5 이후로부터는 오토박싱 / 오토 언박싱 기능이 지원되면서
기본 데이터형도 저장이 가능하다.
벡터클래스의 기본 구조는
시퀀스(Sequence) 데이터 구조에 기반하며
시퀀스 데이터 접근을 순차적인 인덱스 값에 대한 위치로 접근하게 된다.
따라서, 자료구조의 양 끝단에서만 접근이 가능한 큐나
한쪽 끝에서만 접근이 가능한 스택과 달리
시퀀스 개념의 인덱스 값을 이용하여 자료구조의 임의의 지점에서
저장 및 접근이 가능하다.
벡터의 시퀀스 구조는
List 인터페이스를 통해 제공받고 있기 때문에
List 인터페이스의 모든 메소드를 사용할 수 있다.
- void add(int index, E element) **
- void insertElement(E obj, int index) **
주어진 위치에 객체를 저장한다.
주어진 위치의 객체부터 오른쪽으로 하나씩 이동한다.
- void addElement(E obj)
- boolean add(E e)
객체를 벡터 끝에 추가한다.
- void removeElementAt(int index)
- E remove(int index)
주어진 위치의 객체를 제거한다.
제거 후 주어진 위치 다음의 객체부터 하나씩 왼쪽으로 이동한다.
E remove(int index) 메소드는 저장되었던 객체를 반환한다.
- boolean removeElement(Object obj)
- boolean remove(Object obj)
대상 객체를 제거한다.
제거 후 주어진 위치 다음의 객체부터 하나씩 왼쪽으로 이동한다.
객체가 정상적으로 제거되었으면 true를 반환한다.
- void removeAllElement()
- void clear()
벡터의 모든 요소를 제거한다.
- void setElementAt(E obj, int index)
- E set(int index, E element)
벡터의 index 위치에 주어진 객체를 저장한다.
주어진 위치에 저장되어 있던 객체는 소멸한다.(→ 덮어쓰기의 개념)
- E elementAt(int index)
- E get(int index)
주어진 위치에 저장된 객체를 반환한다.
- Enumeration<E> elements()
벡터의 모든 요소를 반환한다.
- int indexOf(Object o)
주어진 객체가 저장된 위치를 반환한다.
존재하지 않을 경우 『음수』를 반환한다.
- int indexOf(Object o, int index)
주어진 객체가 저장된 위치를 index 위치부터 찾아서 반환한다.
index 위치는 스캔을 시작하는 위치.
- boolean contains(Object o)
벡터가 주어진 객체를 포함하고 있는지의 여부를 반환한다.
- void ensureCapacity(int minCapacity)
벡터의 용량을 주어진 크기보다 크도록 조절한다.
- E firstElement()
벡터의 첫 번째 요소의 데이터를 반환한다.
- E lastElement()
벡터의 마지막 요소의 데이터를 반환한다.
- void setSize(int newSize)
벡터의 크기를 조절한다.
만약 주어진 크기가 현재 크기보다 작다면 나머지는 버린다.
반대로 주어진 크기가 현재 크기보다 크다면
빈 공간은 null 객체로 채우게 된다.
(객체를 참조하지 않음을 의미)
- int capacity()
현재 벡터의 용량을 반환한다.
- int size()
현재 벡터에 저장된 객체의 갯수(size)를 반환한다.
- int trimToSize
벡터의 용량을 저장된 객체의 갯수에 맞도록 최소화한다.
*/
import java.util.Vector;
import java.util.Iterator;
public class Test160
{
private static final String[] colors
= {"검정", "노랑", "초록", "파랑", "빨강", "연두"};
public static void main(String[] args)
{
int i;
String str;
Vector<Object> v = new Vector<Object>();
for (i = 0; i<colors.length; i++ )
{
v.add(colors[i]);
}
v.addElement("하양");
str = (String)v.firstElement();
System.out.println("첫 번째 요소 - " + str);
// 첫 번째 요소 - 검정
str = (String)v.get(1);
System.out.println("두 번째 요소 - " + str);
// 두 번째 요소 - 노랑
str = (String)v.get(0);
System.out.println("첫 번째 요소 - " + str);
// 첫 번째 요소 - 검정
str = (String)v.elementAt(1);
System.out.println("두 번째 요소 - " + str);
// 두 번째 요소 - 노랑
str = (String)v.lastElement();
System.out.println("마지막 요소 - " + str);
// 마지막 요소 - 연두
// line 128번 addElement() 이후 : 마지막 요소 - 하양
// ※ 벡터 자료구조에 요소 추가 시(→ add() / addElement())
// 인덱스 마지막(가장 끝)의 위치에 추가되는 것을 확인할 수 있다.
// 전체 요소 출력
// 『Iterator(이터레이터 or 아이터레이터)』
// 『hasNext()』 : 망보는 메소드(다음 데이터 요소가 있는지의 여부를 반환)
// 『next()』 : 값가져오는 메소드(다음 데이터 요소를 직접적으로 반환)
Iterator<Object> it = v.iterator();
System.out.println();
boolean flag = true;
while (it.hasNext()) // true true true true true true true false
{
str = (String)it.next(); // 검정 노랑 초록 파랑 빨강 연두 하양
System.out.print(str + " ");
}
System.out.println();
// 참고 next : 검정, 노랑 ~ 연두, 하양
// 참고 hasNext : 검, 노, 초, 파, 빨, 연, 하, 없음
/* ▼ ▼ ▼ ▼ ▼ ▼ ▼
======================================================
"검정", "노랑", "초록", "파랑", "빨강", "연두", "햐앙"
------------------------------------------------------
*/
}
}
// 실행 결과
/*
첫 번째 요소 - 검정
두 번째 요소 - 노랑
첫 번째 요소 - 검정
두 번째 요소 - 노랑
마지막 요소 - 하양
검정 노랑 초록 파랑 빨강 연두 하양
계속하려면 아무 키나 누르십시오 . . .
*/
728x90
'JAVA' 카테고리의 다른 글
Test162.java / 컬렉션 프레임워크(Collection Framework) / 벡터 - Vector (0) | 2022.10.29 |
---|---|
Test161.java / 컬렉션 프레임워크(Collection Framework) / 벡터 - Vector (0) | 2022.10.29 |
Test159.java / 컬렉션 프레임워크(Collection Framework) / Queue (큐) (0) | 2022.10.25 |
Test158.java / 컬렉션 프레임워크(Collection Framework) / Queue (큐) (0) | 2022.10.25 |
Test157.java / 컬렉션 프레임워크(Collection Framework) / 스택(Stack) (0) | 2022.10.25 |
댓글