collection : 여러개의 데이터를 한꺼번에 모아서 처리한다
       종류 : list,set,map
                 vector : list나오기전에 나왔음,list보다 자원을 더 많이씀

 

package kr.or.ddit.basic;

import java.awt.TexturePaint;
import java.util.Vector;

public class VectorTest01 {

	public static void main(String[] args) {
		// 객체 생성
		Vector v1 = new Vector();
		
		System.out.println("처음 크기 : " + v1.size());
		
		// 데이터 추가 : add(추가할데이터)
		// 반환값 : 성공(true), 실패(false)
		v1.add("aaaa");
		v1.add(new Integer(111)); // 데이터(111)을 객체화시켜주는게 Integer(래퍼클래스?), 앞이 대문자
		v1.add(123); // Integer를 생략해도 됨 ->오토박싱 : 박싱작업을 자동으로 해줌
		v1.add('a'); // ==> Character 
		v1.add(true); 
		boolean r = v1.add(3.14);
		
		System.out.println("현재 크기 : " + v1.size());
		System.out.println("반환값 : " + r);
		
		// 데이터 추가2 : addElement( 추가할데이터 ), vector에만 있음
		// 이전 버전의 프로그램도 사용할 수 있도록 하기 위해서 남아 있는 메서드(호환성을 위해)
		v1.addElement("CCCC");
		
		System.out.println("v1 => " + v1.toString()); // v1에 들어간 데이터 출력
		System.out.println("v1 => " + v1); // toString 생략가능 (출력에서만)
		
		// 데이터 꺼내오기 : get(index)
		// ==> 'index'번째 데이터를 반환한다.  (index는 0부터 시작한다.)
		
		int data = (int)v1.get(1); // 꺼내올때는 형변환을 해줘야함 , 데이터가 object에 저장되기 때문에
		System.out.println("꺼내온 데이터 : " + data);
		System.out.println("꺼내온 데이터 2 : " + v1.get(3)); // 출력할때는 형변환 하지 않아도 됨
		System.out.println();
		
		// 데이터 추가 : add(index, 데이터)
		// ==> 'index'번째에 '데이터'를 끼워 넣는다.
		// ==> 반환값이 없다.
		v1.add(1, "KKKK");
		System.out.println("v1 => " +v1);
		
		// 데이터 수정 : set(index, 새로운값);
		// 배열변수[index] = 새로운값
		// 반환값 : 변경되기 전의 데이터
		String temp = (String)v1.set(0, "zzzz");
		System.out.println("변경 후 v1 => " + v1);
		System.out.println("변경 전의 데이터 : " + temp);
		
		// 데이터 삭제 : remove(index)
		// ==> 'index'번째 데이터를 삭제한다.
		// ==> 반환값 : 삭제된 데이터 
		v1.remove(0);
		System.out.println("삭제후 v1 => " + v1);
		
		temp =(String) v1.remove(0);
		System.out.println("삭제후 v1 => " + v1);
		System.out.println("삭제된 데이터 => " + temp);
		System.out.println();
		
		// 데이터 삭제 : remove(삭제할데이터)
		// ==> '삭제할데이터'를 찾아서 삭제한다.
		// ==> '삭제할데이터'가 여러개이면 앞에서 부터 삭제한다.
		// ==> 반환값 : 삭제성공(true), 삭제실패(false)
		// ==> '삭제할데이터'가 '정수형'이거나 'char형'일 경우 반드시 객체로 변환해서 사용해야 한다.
		v1.remove("CCCC");
		System.out.println("삭제 후 v1 => " + v1);
//		v1.remove(123); // 123번째 인덱스라고 인식해서 오류남
		v1.remove(new Integer(123)); // int 객체와 이름이 다르기때문에 주의
		System.out.println("삭제 후 v1 => " + v1);
//		v1.remove('a'); // 캐릭터 => a의 코드값 97이라 97번째 인덱스라고 인식해 오류
		v1.remove(new Character('a')); // char
		System.out.println("삭제 후 v1 => " + v1);
		v1.remove(3.14);
		System.out.println("삭제 후 v1 => " + v1);
		v1.remove(true);
		System.out.println("삭제 후 v1 => " + v1);
		System.out.println("----------------------------------");
제네릭타입(Generic Type) ==> 클래스 내부에서 사용할 데이터의 타입을 외부에서 지정하는 기법으로
                                              객체를 선언 할 때 괄호(< >)안에 그 객체의 내부에서 사용할 데이터의 타입을
                                              정해 주는 것을 말한다. 이런식으로 선언하게 되면 지정한 데이터 타입 이외의
                                              다른 데이터를 저장할 수 없다. 제네릭으로 선언될 수 있는 데이터 타입은
                                              클래스형이어야 한다. 그래서 int는 Integer, boolean은 Boolean, char은 Character등
                                              으로 대체해서 사용해야 한다.
                                              제네릭 타입으로 선언하게되면 데이터를 꺼내올 때 별도의 형변환이 필요없다.
Vector<String> v2 =new Vector<String>();
		Vector<Integer> v3 =new Vector<Integer>();
		
		v2.add("안녕하세요");
	    //v2.add(123); // ==> 오류: 제네릭 타입과 다른 종류의 데이터를 추가할 수 없다.
		
		String temp2 = v2.get(0); // 형변환없이 자료를 꺼내서 사용할 수 있다. -> 위에서 타입을 지정해 줬기 때문
		
		Vector<Vector> vv= new Vector<Vector>();
		Vector<Vector<Vector>> vvv= new Vector<Vector<Vector>>();
		System.out.println("-------------------------------------------------");
		
		v2.clear(); // 전체 데이터 삭제하기
		System.out.println("v2의 size : " + v2.size());
		
		v2.add("AAAA");
		v2.add("BBBB");
		v2.add("CCCC");
		v2.add("DDDD");
		v2.add("EEEE");
		
		Vector<String> v4 =new Vector<String>();
		v4.add("BBBB");
		v4.add("EEEE");
		
		System.out.println("v2 => " +v2);
		System.out.println("v2 => " +v4);
		
		// 데이터 삭제 : removeAll(Collection객체)
		// ==> 'Collection객체'가 가지고 있는 데이터를 모두 삭제한다.
		// ==> 반환값 : 삭제성공(true), 삭제실패(false)
		v2.removeAll(v4); // v2중에 v4를 지워라
		System.out.println("삭제후 v2 => " + v2);
		System.out.println("-----------------------");
	    
		// 벡터의 데이터를 순서대로 모두 가져와 사용하고 싶으면 반복문을 사용하면 된다.
		// (보통 for문을 사용한다.)
		v2.clear();
		v2.add("AAAA");
		v2.add("BBBB");
		v2.add("CCCC");
		v2.add("DDDD");
		v2.add("EEEE");
		
		for(int i = 0; i<v2.size(); i++) {
			System.out.println(i + "번째 자료 : " + v2.get(i));
			
		}
		System.out.println("--------------------------------");
		
		// 향상된 for문 // 첨자 없이 사용
		for(String s : v2) {
			System.out.println(s);
		}
	}

}

'JAVA 복습 & 정리' 카테고리의 다른 글

[HighJava] Stack,Queue  (0) 2022.12.20
[HighJava] ArrayListTest04  (0) 2022.12.20
[HighJava] ArrayListTest03  (0) 2022.12.20
[HighJava] ArrayListTest02  (0) 2022.12.20
[HighJava] ArrayListTest01  (0) 2022.12.20

+ Recent posts