Vector, ArrayList, LinkedList 의 차이점

– Vector : 구버전 호환용. 그다지 사용되지 않음. 동기화 처리가 내부적으로 일어남으로 다른 객체보다 무거움

– ArrayList : 배열의 복사에 의한 데이터 저장처리를 내부적으로 행하며, 각 데이터에 대한 인덱스를 가지고 있기 때문에 검색이 매우 빠르다. 다만 많은 데이터의 추가/삭제시에는 배열의 복사가 빈번하게 일어나, 성능이 떨어지는 단점이 있다. 동기화된 ArrayList를 사용하기 위해서는 Collections.synchronizedList()를 이용할 수 있다.

– LinkedList : 다음 자료의 위치정보를 가지며, 내부적인 인덱스는 가지고 있지 않다. 데이터의 추가/삭제는 위치정보의 수정만으로 가능하기 때문에 많은 정보의 추가/삭제처리가 필요할 때 유용하다. 다만, 데이터가 많은 경우의 검색시 처음 자료로부터 순차적으로 찾아 나가야 하기 때문에 느려지는 단점이 있다.

디버그 Watch창에서 vector 내용 확인하기

STL 를 사용하다보면 어려운 점 중에 하나가 그 내용을 확인하기가 쉽지 않다는 점입니다. 배열을 사용하면 디버그 watch 창에 그 내용물이 보기 쉽게 표시되는데 배열의 STL 대응인 std::vector 를 사용하면 무슨 내용이 vector 저장되어 있는지 디버깅 시 확인하기가 쉽지 않습니다. 다음과 같이 watch 창에 입력하면 std::vector 의 내용을 확인할 수 있습니다.

01: /* testWatch.cpp : Defines the entry point for the console application. */
02:
03: 
04: #include "stdafx.h"
05: #include <vector>
06: #include <string>
07: 
08: struct Student
09: {
10:   std::string name;
11:   int id;
12: 
13:   Student(const std::string & _name, const int & _id) : name(_name), id(_id) { 

Vector, Hashtable, 열거자

Vector 클래스
데이터의 입력한 순서에 따라서 데이터 추출, index로 추출

Vector vector = new Vector();
vector.addElement(new Character('A'));
vector.addElement(new String("test"));
vector.addElement(new Integer(100));
vector.addElement(new Integer(200));
vector.insertElementAt(new Float(3.14), 1); // 1번째에 중간 삽입
vector.setElementAt(new String("Set"), 3);  // 3번째 존재하는 것 제거후 다시 삽입

System.out.println("vector의 0번째:" + (Character)vector.elementAt(0));

if (vector.contains(new String("Set"))) {  // vector에 특정 객체가 있는지 확인한다.
   Integer integer = new Integer(vector.indexOf("Set"));  // 찾고자 하는 객체를 이용하여 해당 객체를 vector에서 찾는다.
}

 

Hashtable 클래스
키 값과 데이터를 같이 입력하고 키 값으로 데이터를 추출할 수 있다. 그리고 vector의 기능도 갖고 있다.

Hashtable hashtable = new Hashtable();
hashtable.put("Name", new String("test"));
hashtable.put("Age", new Integer(27));

String