⚙️ Backend/JAVA

JAVA 자바 - 컬렉션 : Vector

코너(Corner) 2020. 12. 8.
반응형

정의


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

댓글