JAVA

[Java.6-2.1] 컬렉션 : List<E> - Vector

식빵민 2022. 6. 13. 18:43

List<E> 인터페이스

  • 순서를 가지는 요소들의 모임으로 중복된 요소를 가질 수 있는 저장소
  • 요소의 저장 순서 유지
  • 같은 요소의 중복 저장 허용

[Java.6-2] 컬렉션 : List<E>

 

[Java.6-2] 컬렉션 : List<E>

List 인터페이스 : 가변길이의 배열 순서를 가지는 요소들의 모임으로 중복된 요소를 가질 수 있는 저장소 List 인터페이스를 구현한 List 컬렉션 클래스의 특징 요소의 저장 순서 유지 같은 요소의

genius00hwan.tistory.com


Vector<E>

  • java.util.Vector : <E>에 E대신 요소로 사용할 특정 타입으로 구체화
  • 여러 객체들을 삽입, 삭제, 검색하는 컨테이너 클래스
    • 배열의 길이 제한 극복
    • 원소의 개수가 넘쳐나면 자동으로 길이 조절

  • Vector에 삽입 가능한 것
    • 객체, null
    • 기본 타입은 Wrapper 객체로 만들어 저장(자동 박싱/언박싱)

  • Vector에 객체 삽입
    • Vector의 맨 뒤에 객체 추가 혹은 중간에 객체 삽입

  • Vector에서 객체 삭제
    • 임의의 위치에 있는 개체 삭제 가능 - 객체 삭제 후 자동 자리 이동


Vector<> 컬렉션의 내부 구성

Vector<Integer> v = new Vector<Integer>();

Vector의 각 셀에는 Integer객체를 가리키는 레퍼런스가 들어 있다.


타입 매개변수를 사용하지 않는 경우 경고 발생!

import java.util.Vector;

public class VectorEx{
	public static void main(String[] args){
    	Vector v = new Vector();
        //!!오류!! 어떤 타입의 객체가 들어갈지 명시해야함!
        //Vector is a raw type. 
        //References to generic type Vector<E> should be parameterized...
    }
}

Vector<E> 클래스의 주요 메소드

메소드 설명
boolean add(E e) 벡터의 맨 뒤에 e 추가
void add(int i, E e) 인덱스 i에 e 삽입
int capacity() 벡터의 현재 용량 반환
boolean addAll(Collection<? extends E> c) 컬렉션 c의 모든 요소를 벡터의 맨 뒤에 추가
void clear() 벡터의 모든 요소 삭제
boolean isEmpty() 벡터가 비어 있으면 true 반환
boolean contains(Object o) 벡터가 지정된 객체 o를 포함하고 있으면 true 반환
E elementAt(int i) 인덱스 i의 요소 반환
E get(int i) 인덱스 i의 요소 반환
E remove(int i)  인덱스 i의 요소 삭제
boolean remove(Object o) 객체 o와 같은 첫 번째 요소를 벡터에서 삭제
void removeAllElements() 벡터의 모든 요소를 삭제하고 크기를 0으로 만듦
int indexOf(Object o) o와 같은 첫 번째 요소의 인덱스 반환, 없으면 -1반환
int size() 벡터가 포함하는 요소의 개수 반환
Object[] toArray() 벡터의 모든 요소를 포함하는 배열 반환

Vector 생성

Vector<Integer> v = new Vector<Integer>(7);// capacity : 7
Vector<Integer> v2 = new Vector<Integer>(); // capacity : 기본값, 10

vector에 요소 저장

v.add(5); // 0번째 인덱스에 저장
v.add(4); // 1번째 인덱스에 저장
...
v.add(12); // 8번째 인덱스에 저장
// 8번째 요소가 들어가면 capacity를 2배로 늘림, capacity: 14

요소의 개수, 용량

int n = v.size(); // n은 8
int c = v2.capacity(); // c는 10

요소 중간 삽입

v.add(2,100);
//v.add(10,100);//!오류! v.size()보다 큰 곳에 삽입 불가능

요소 알아내기

Integer obj = v.get(1);// call by reference
int i = obj.intValue();// i의 값은 4

요소 삭제

v.remove(1);// 인덱스 1에 있는 요소 삭제 
//n = 9 에서 -> n = 8
//v.remove(8);// !오류! 8번 index는 이제 없으므로 오류
int last = v.lastElement(); // 마지막 요소 call by value를 이용한 자동 언박싱
v.removeAllElements(); // 모든 요소 삭제, v는 빈 배열로

 

+ JDK 1.5 부터

  • 자동 박싱, 언박싱 작동하여 기본 타입 값 사용 가능
  • 제네릭의 타입 매개 변수를 기본타입으로 구체화할 수는 없음