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 |