본문 바로가기
프로그래밍 언어/자바

벡터와 해시테이블

by 블루데이제이 2022. 9. 12.
728x90
반응형

벡터

다수의 데이터를 다루기 위해 배열이라는 것을 사용했습니다. 사용 방법이 간단하기 때문에 자주 사용되죠.

그런데 배열에는 단점이 있습니다. 배열의 크기가 한번 정해지면 크기 변경이 어렵고 생성된 배열과 같은 종류의 데이터만 사용할 수 있다는 거죠.

이러한 배열의 단점을 보완한 것이 벡터입니다.

벡터의 특징

1. 용량 변경이 가능하다.

2. 여러 객체를 포함시킬 수 있다.

 

주요 생성자

■ Vector() : 초기 용량 10, 용량 초과 시 크기를 두 배씩 증가

■ Vector(int initCapacity) : 지정한 크기의 용량으로 초기화, 용량 초과 시 크기를 두 배씩 증가

■ Vector(int initCapacity, int capacityIncrement) : 지정한 크기의 용량으로 초기화, 용량 초과 시 크기를 capacityIncrement만큼 증가

Vector v1 = new Vector();

Vector v2 = new Vector(10);

Vector v3 = new Vector(10, 5);

 

주요 메소드

■ void add(int index, Object element) : 주어진 인덱스 위치에 요소 추가

■ void addElement(Object obj) : Vector 끝에 요소 추가

■ int capacity() : Vector의 현재 용량 리턴

■ void clear() : Vector 초기화

■ boolean contains(Object element) : 주어진 요소가 Vector에 포함되어 있는지 리턴

■ Object elementAt(int index) : 주어진 위치의 요소를 리턴

■ int indexOf(Object element) : 주어진 요소의 위치를 리턴, 요소가 포함되어 있지 않으면 -1 리턴

■ Object remove(int index) : 주어진 위치의 요소를 벡터에서 제거

■ int size() : Vector에 포함되어 있는 요소의 수 리턴

■ void trimToSize() : Vector의 용량을 현재 Vector의 크기에 맞게 수정

package com.bluedayj;

import java.util.StringTokenizer;
import java.util.Vector;

public class VectorTest {
	public static void main(String[] args) {
		String src = "죽는 날까지 하늘을 우러러\n" + 
				"한 점 부끄럼이 없기를,\n" + 
				"잎새에 이는 바람에도\n" + 
				"나는 괴로워했다.\n" + 
				"별을 노래하는 마음으로\n" + 
				"모든 죽어 가는 것을 사랑해야지\n" + 
				"그리고 나한테 주어진 길을\n" + 
				"걸어가야겠다.\n" + 
				"오늘 밤에도 별이 바람에 스치운다.";
		
		StringTokenizer st = new StringTokenizer(src, " ");
		
		Vector v = new Vector();
		System.out.println("초기용량 : " + v.capacity());
		System.out.println("초기크기 : " + v.size());
		
		while(st.hasMoreTokens()) {
			v.addElement(st.nextToken());
		}
		
		for(int i = 0; i < v.size(); i++) {
			String word = v.elementAt(i).toString();
			System.out.println(word);
		}
		System.out.println("현재용량 : " + v.capacity());
		System.out.println("현재크기 : " + v.size());
		
		v.trimToSize();
		System.out.println("최적용량 : " + v.capacity());
		System.out.println("현재크기 : " + v.size());
		
		v.clear();
		System.out.println("초기화 후 용량 : " + v.capacity());
		System.out.println("초기화 후 크기 : " + v.size());
	}
}

 

 

해시테이블

벡터는 대량의 데이터를 저장할 수는 있지만 저장된 데이터 중에서 특정 값을 알아내는데는 적합하지 않습니다. 해시테이블은 벡터를 이용해 검색하기 힘든 데이터를 효과적으로 검색할 수 있는 방법을 제공해줍니다.

주요 생성자

■ Hashtable() : 해시테이블 생성

■ Hashtable(int initialCapacity) : 주어진 용량의 크기를 가지는 해시테이블 생성

■ Hashtable(int initialCapacity, float loadFactor) : 주어진 용량과 부하율을 가지는 해시테이블 생성

 

주요 메소드

■ void clear() : 해시테이블의 모든 데이터 삭제

■ boolean contains(Object value) : 주어진 요소가 포함되어 있는지 알아낸다

■ boolean containsKey(Object key) : 주어진 키가 포함되어 있는지 알아낸다

■ Enumeration elements() : 해시테이블의 요소에 대한 Enumeration 객체를 얻음

■ Enumeration keys() : 해시테이블의 카에 대한 Enumeration 객체를 얻음

■ Object get(Object key) : 주어진 키에 대한 요소를 검색

■ Object put(Object key, Object value) : 해시테이블에 요소 추가

■ Object remove(Object key) : 주어진 키에 해당하는 값을 제거

package com.bluedayj;

import java.util.Enumeration;
import java.util.Hashtable;

public class HashtableTest {
	public static void main(String[] args) {
		Hashtable hash = new Hashtable();
		hash.put("이름", "홍길동");
		hash.put("나이", "20세");
		hash.put("국적", "대한민국");
		
		System.out.println("이름 : " + hash.get("이름"));
		
		Enumeration e = hash.keys();
		while(e.hasMoreElements()) {
			String key = e.nextElement().toString();
			String val = hash.get(key).toString();
			
			System.out.println(key + " : " + val);
		}
	}
}

728x90
반응형

'프로그래밍 언어 > 자바' 카테고리의 다른 글

예외 처리  (0) 2022.09.12
날짜 다루기  (0) 2022.09.12
자바 문자열 다루기 #2  (0) 2022.09.12
자바 문자열 다루기 #1  (0) 2022.09.12
자바 클래스와 객체 #6  (0) 2022.09.12