⚙️ Backend/JAVA
JAVA 자바 - 컬렉션 : Vector
반응형
정의
1) 개요
- ArrayList와 동일한 내부 구조를 가지고 있다.
- 컬렉션 프레임워크 중 List 계열의 한 종류이다.
- ArrayList Class와 동일한 인터페이스를 상속받은 클래스이다.
- ArrayList Class와 달리 동시 사용을 안전하게 처리할 수 있도록 설계된 클래스 (동기화 처리 가능)
- 일반적인 경우 ArrayList보다 무겁기 때문에 동기화 처리가 필요한 경우에 주로 사용한다.
- ArrayList와 Vector의 관계는 문자열 클래스인 StringBuilder와 StringBuffer 클래스의 관계와 비슷하다.
- 동일 데이터를 여러 곳에서 동시에 처리하기 위한 장치들이 포함된 클래스가 Vector와 StringBuffer이다.
- 여러 곳에서 동시에 하나의 자원을 사용할 때 문제없이 동작하도록 하는 기능을 "동기화 처리"라고 한다.
2) 이용
멀티스레드 환경에서 안전하게 객체를 추가, 삭제할 수 있도록 이용한다.
3) 생성하기
new Vector() : 기본 크기 10, 자동 확장 크기 10의 배열 생성이 된다.
new Vecotr(크기) : 기본 크기 및 자동 확장 크기 지정
new Vector(크기, 확장단위) : 생성 시 배열 사이즈 및 확장 단위를 직접 지정한다.
new Vector<Generic>() : 배열 값의 형태를 지정한다.
예제1) Board객체를 저장하는 Vector
import java.util.List;
import java.util.Vector;
public class VectorExample {
public static void main(String[] args) {
List<Board> list = new Vector<Board>();
list.add(new Board("제목1", "내용1", "글쓴이1"));
list.add(new Board("제목2", "내용2", "글쓴이2"));
list.add(new Board("제목3", "내용3", "글쓴이3"));
list.add(new Board("제목4", "내용4", "글쓴이4"));
list.add(new Board("제목5", "내용5", "글쓴이5"));
list.remove(2);
list.remove(3);
for(int i=0; i<list.size(); i++) {
Board board = list.get(i);
System.out.println(board.subject + "\t" + board.content + "\t" + board.writer);
}
}
}
----------------
package sec02.exam02_vector;
public class Board {
String subject;
String content;
String writer;
public Board(String subject, String content, String writer) {
this.subject = subject;
this.content = content;
this.writer = writer;
}
}
/*
4) add(인덱스) / get(인덱스) / set (인덱스, 바꿀값) 메소드
ArrayList와 동일
addElement() / elementAt() / setElementAt() 메소드가 따로 있지만 동일하게 작동
*/
예제2)
import java.util.Vector;
public class Main {
public static void main(String[] args) {
Vector<String> list = new Vector<String>();
list.addElement("사과");
list.add("배");
list.add("포도");
list.add(0, "바나나");
System.out.println(list); // [바나나, 사과, 배, 포도]
System.out.println(list.get(0)); // "바나나"
list.set(0, "파인애플");
System.out.println(list); // [파인애플, 사과, 배, 포도]
}
}
/*
5) firstElement() / lastElement() 메소드 - 첫 값, 마지막 값을 반환
*/
//----------------------------------------
예제3)
import java.util.Vector;
public class Main {
public static void main(String[] args) {
Vector<String> list = new Vector<String>();
list.addElement("사과");
list.add("배");
list.add("포도");
list.add("바나나");
System.out.println(list.firstElement()); // "사과"
System.out.println(list.lastElement()); // "바나나"
}
}
/*
6) capacity() / size() / trimToSize() - 메소드
capacity() : 현재 배열의 크기 반환
size() : 현재 배열에 저장된 값의 갯수 반환
trimToSize() : 배열에 저장된 값의 갯수만큼 전체 크기를 줄임
*/
// --------------------------------------------------------
예제4) import java.util.Vector;
public class Main {
public static void main(String[] args) {
Vector<String> list = new Vector<String>();
list.addElement("사과");
list.add("배");
list.add("포도");
list.add(0, "바나나");
System.out.println(list.size()); // 4
System.out.println(list.capacity()); // 10
list.trimToSize();
System.out.println(list.capacity()); // 4
}
}
// -----------------------------------------------------
/*
5) remove(), clear() - 메소드
ArrayList와 동일 (상속받은 인터페이스에서 정의한 메소드들)
별도의 removeElement, removeAllElements() 등의 메소드가 있지만 굳이 사용할 필요는 없을 듯함
*/
import java.util.Vector;
public class Main {
public static void main(String[] args) {
Vector<String> list = new Vector<String>();
list.addElement("사과");
list.add("배");
list.add("포도");
list.add(0, "바나나");
list.remove("사과");
list.remove(0);
System.out.println(list); // [배, 포도]
list.clear();
System.out.println(list); // [ ]
}
}
반응형
'⚙️ Backend > JAVA' 카테고리의 다른 글
JAVA - 컬렉션 : TreeSet (트리구조) (0) | 2020.12.09 |
---|---|
JAVA 자바 - 컬렉션 : Set (0) | 2020.12.09 |
자바 - 컬렉션 프레임워크 - List 계열 (1) | 2020.12.07 |
Java.time Package (0) | 2020.12.03 |
JAVA - Clone에 관하여.. (0) | 2020.11.30 |
댓글