Java/이것이자바다

15.2.2 Vector

유호야 2020. 12. 3. 20:50
반응형

Vector는 ArrayList와 동일한 내부 구조를 가지고 있다. 

Vector를 생성하기 위해서는 저장할 객체 타입을 타입 파라미터로 표기하고 기본 생성자를 호출하면 된다.

List<E> list = new Vector<E>();

ArrayList와 다른 점은 Vector는 동기화된(Synchronized) 메소드로 구성되어 있기 때문에 멀티스레드가 동시에 이 메소드들을 실행할 수 없고, 하나의 스레드가 실행을 완료해야만 다른 스레드를 실행할 수 있다. 그래서 멀티 스레드 환경에서 안전하게 객체를 추가, 삭제할 수 있다. 이것을 스레드가 안전(Thread Safe) 하다라고 말한다.

 

- 다음은 Vector를 이용해서 Board 객체를 추가, 삭제, 검색하는 예제이다.

VectorExample.java : Board 객체를 저장하는 Vector

package bb.bb.bb;

import java.util.*;

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.add(new Board("한 개는 불가능"));
		
		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);
		}	
	}
}

 

Board.java : 게시물 정보 객체

package bb.bb.bb;

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;
	}
	//Board객체가 생성될 때 실행되는 생성자(Constructor)이다.
	

}

 

반응형

'Java > 이것이자바다' 카테고리의 다른 글

15.3.1 HashSet  (0) 2020.12.04
15.3 Set 컬렉션  (0) 2020.12.03
15.2.1 ArrayList  (0) 2020.12.03
15.2 List 컬렉션  (0) 2020.12.03
15.1 컬렉션 프레임워크 소개  (0) 2020.12.03