JAVA
[Java.6-2.1] 컬렉션 : List<E> - Vector
식빵민
2022. 6. 13. 18:43
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<> 컬렉션의 내부 구성
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 부터
- 자동 박싱, 언박싱 작동하여 기본 타입 값 사용 가능
- 제네릭의 타입 매개 변수를 기본타입으로 구체화할 수는 없음