Test154 컬렉션 프레임워크(Collection Framework) / Vector 클래스 접근방법
※ Vector v = new Vector();
→ 비어있는 Vector 자료구조 생성
※ Vector v = new Vector(8);
→ 8개의 초기 elements 를 가진 Vector 자료구조 생성.
8개가 모두 채워지게 되면(모자라게 되면) 자동으로 확장된다.
※ Vector v = new Vector(3, 5);
→ 3개의 초기 elements 를 가진 Vector 자료구조 생성.
3개가 모두 채워지게 되면 (모자라게 되면) 5개 증가(확장)된다.
※ 벡터는 데이터 요소로서 정수형, 실수형, 문자열 ... 등을 담아내는 것이 가능하다.
→ 접근 방법 → 데이터 안정성 확보 -- check~~!!!
// MyVector 클래스 설계 → Vector 클래스 상속
Test000.java
import java.util.Vector;
import java.util.Iterator;
class MyVector extends Vector<Object> // <Object>형태로 상속받을때 <Object>를 붙인다.
{
// 생성자
MyVector()
{
//--Vector(1,1) : 부모 생성자에 두 개의 매개변수를 넣음 (슈퍼 클래스)
super(1,1);
//-- 첫 번째 인자 : 주어진 용량
// 두 번째 인자 : 증가량
}
void addInt(int i)
{
addElement(new Integer(i));
}
void addFloat(float f)
{
addElement(new Float(f));
}
void addString(String s)
{
addElement(s);
}
void addCharArray(char[] a)
{
addElement(a);
}
void write()
{
Object o;
int length = size();
System.out.println("벡터의 크기 : " + length);
for (int i=0; i<length; i++)
{
o = elementAt(i);
// 『instanceof』 연산자
//-- 처리해야 하는 대상의 객체 타입 확인
if (o instanceof char[])
{
// System.out.println("문자배열 : " + o.toString());
System.out.println("문자배열 : " + String.copyValueOf((char[])o));
}
else if (o instanceof String) //-- o가 String타입인지 확인하는 연산자
{
System.out.println("문자배열 : " + o.toString());
}
else if (o instanceof Integer)
{
System.out.println("정수형 : " + o);
}
else if (o instanceof Float)
{
System.out.println("실수형 : " + o);
}
else
{
System.out.println("타입 확인 불가~!!!");
}
}
//--==>> 벡터의 크기 : 4
// 정수형 : 5
// 실수형 : 3.14
// 문자배열 : 안녕하세요
// 문자배열 : study
//-------------------------------------------------------------------------
System.out.println();
Iterator<Object> it = this.iterator(); //<Object> 확인
while (it.hasNext())
{
System.out.println(it.next());
}
//--==>> 5
// 3.14
// 안녕하세요
// [C@6d06d69c
}
}
Test154.java
public class Test154
{
public static void main(String[] args)
{
// MyVector 클래스 인스턴스 생성
MyVector v = new MyVector();
// 주요 변수 선언 및 초기화
int digit = 5;
float real = 3.14f;
String s = new String("안녕하세요");
char[] letters = {'s','t','u','d','y'};
v.addInt(digit); //-- 벡터 자료구조에 정수 저장
v.addFloat(real); //-- 벡터 자료구조에 실수 저장
v.addString(s); //-- 벡터 자료구조에 문자열 저장
v.addCharArray(letters); //-- 벡터 자료구조에 배열주소(배열을객체로취급했다) 저장
//--==> 5
// 3.14
// 안녕하세요
// [C@6d06d69c
v.write();
}
}
cmd
벡터의 크기 : 4
정수형 : 5
실수형 : 3.14
문자배열 : 안녕하세요
문자배열 : study
5
3.14
안녕하세요
[C@6e3c1e69
계속하려면 아무 키나 누르십시오 . . .
Test154 Vector 클래스 접근방법 / Collections.binarySearch(,)
Test155.java
import java.util.Vector;
import java.util.Collections;
public class Test155
{
// 정적 문자열 배열 선언 및 초기화
private static final String[] colors = {"검정","노랑","초록","파랑","파랑","연두"};
public static void main(String[] args)
{
// 벡터 자료구조 생성
Vector<String> v = new Vector<String>();
// v 라는 벡터 자료구조에 colors 의 요소 추가
for (String color : colors)
v.add(color);
System.out.println("첫 번째 요소 : " + v.firstElement());
System.out.println("두 번째 요소 : " + v.get(1));
System.out.println("마지막 요소 : " + v.lastElement());
System.out.println("요소의 갯수 : " + v.size());
System.out.println();
//--==>> 첫 번째 요소 : 검정
// 두 번째 요소 : 노랑
// 마지막 요소 : 연두
// 요소의 갯수 : 6
// ○ 첫 번째 요소를 『하양』으로 변경 → set()
v.set(0, "하양");
System.out.println("첫 번째 요소 : " + v.firstElement());
System.out.println("두 번째 요소 : " + v.get(1));
System.out.println("요소의 갯수 : " + v.size());
//--==>> 첫 번째 요소 : 하양
// 두 번째 요소 : 노랑 //-- 첫번째 요소가 교체된 것임을 확인함
// 요소의 갯수 : 6
System.out.println();
// ○ 첫 번째 요소에 『주황』추.가. → insertElementAt()
v.insertElementAt("주황", 0);
System.out.println("첫 번째 요소 : " + v.firstElement());
System.out.println("두 번째 요소 : " + v.get(1));
System.out.println("요소의 갯수 : " + v.size());
System.out.println();
//--==>> 첫 번째 요소 : 주황
// 두 번째 요소 : 하양
// 요소의 갯수 : 7
// ○ 전체 출력
System.out.print("전체 출력 : ");
for (String str : v)
System.out.print(str + " ");
System.out.println("\n");
//--==>> 전체 출력 : 주황 하양 노랑 초록 파랑 파랑 연두
// ○ 오름차순 정렬
Collections.sort(v);
System.out.print("오름차순 정렬 후 전체 출력 : ");
for (String str : v)
System.out.print(str + " ");
System.out.println();
//--==>> 전체 출력 : 노랑 연두 주황 초록 파랑 파랑 하양
// ○ 검색
// Collections.binarySerch()
// 검색 기능 수행. 단, 오름차순 정렬된 자료에서만 사용 가능
// 검색 결과가 존재하지 않을 경우... 음수를 반환한다.
int idx = Collections.binarySearch(v, "파랑");
System.out.printf(">> 파랑 : %d 번째 인덱스에 위치하고 있다.\n", idx);
//--==>> >> 파랑 : 5 번째 인덱스에 위치하고 있다.
int idxNavi = Collections.binarySearch(v, "남색");
System.out.printf(">> 남색 : %d 번째 인덱스에 위치하고 있다.\n", idxNavi);
System.out.println();
//--==>> >> 남색 : -1 번째 인덱스에 위치하고 있다. → 검색결과 없음.
// ○ 내림차순 정렬
Collections.sort(v, Collections.reverseOrder());
System.out.print("내림차순 정렬 후 전체 출력 : ");
for (String str : v)
System.out.print(str + " ");
System.out.println();
//--==>> 내림차순 정렬 후 전체 출력 : 하양 파랑 파랑 초록 주황 연두 노랑
int idxBlue = Collections.binarySearch(v, "파랑");
System.out.printf(">> 파랑 : %d 번째 인덱스에 위치하고 있다.\n\n", idxBlue);
//--==>> >> 파랑 : -8 번째 인덱스에 위치하고 있다.
// 음수형태의 -1이 아닌 다른 숫자가 나오면 찾을 수 없는 환경
idxBlue = Collections.binarySearch(v, "파랑", Collections.reverseOrder());
System.out.printf(">> 파랑 : %d 번째 인덱스에 위치하고 있다.\n\n", idxBlue);
//--==>> >> 파랑 : 1 번째 인덱스에 위치하고 있다.
System.out.print("오름차순 정렬 후 전체 출력 : ");
for (String str : v)
System.out.print(str + " ");
System.out.println();
}
}
cmd
첫 번째 요소 : 검정
두 번째 요소 : 노랑
마지막 요소 : 연두
요소의 갯수 : 6
첫 번째 요소 : 하양
두 번째 요소 : 노랑
요소의 갯수 : 6
첫 번째 요소 : 주황
두 번째 요소 : 하양
요소의 갯수 : 7
전체 출력 : 주황 하양 노랑 초록 파랑 파랑 연두
오름차순 정렬 후 전체 출력 : 노랑 연두 주황 초록 파랑 파랑 하양
>> 파랑 : 5 번째 인덱스에 위치하고 있다.
>> 남색 : -1 번째 인덱스에 위치하고 있다.
내림차순 정렬 후 전체 출력 : 하양 파랑 파랑 초록 주황 연두 노랑
>> 파랑 : -8 번째 인덱스에 위치하고 있다.
>> 파랑 : 1 번째 인덱스에 위치하고 있다.
오름차순 정렬 후 전체 출력 : 하양 파랑 파랑 초록 주황 연두 노랑
계속하려면 아무 키나 누르십시오 . . .
'Study Note > Java' 카테고리의 다른 글
JAVA_ 컬렉션 프레임워크 / HashMap과 Hashtable의 차이점 (0) | 2019.09.08 |
---|---|
JAVA_ cmd 로 java 파일 UTF-8 로 인코딩 후 컴파일하기 (0) | 2018.11.08 |
JAVA_ Test153_ 컬렉션 프레임워크(Collection Framework) / Vector(벡터) 클래스 (0) | 2018.06.17 |
JAVA_ Test152_ 컬렉션 프레임워크(Collection Framework) / Queue 클래스 (0) | 2018.06.17 |
JAVA_ Test151_ 컬렉션 프레임워크(Collection Framework) / Queue 클래스 FIFO 구조 (0) | 2018.06.17 |
댓글