본문 바로가기
Study Note/Java

JAVA_ Test154 & Test155_ 컬렉션 프레임워크(Collection Framework) / Vector 클래스 접근방법

by 시뮝 2018. 6. 17.
728x90


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 번째 인덱스에 위치하고 있다.


오름차순 정렬 후 전체 출력 : 하양 파랑 파랑 초록 주황 연두 노랑

계속하려면 아무 키나 누르십시오 . . .



728x90

댓글