컬렉션 대표 :
1) List
*초창기때 벡터가있었다 --> List
현재도 지원을 해준다. ( 예전에 만든 것을 지원해주려고 )
2) Map ,
3) Set(Set 은 중복되는 데이터를 넣을 수 없다. ) ,,,,
데이터 , 변수 , 배열 , List ( add 메소드를 이용해서 저장한다. 배열처럼 크기가 정해져 있지 않다. ),
메소드 , 클래스
package kr.or.ddit.basic;
import java.util.Vector;
public class VectorTest {
public static void main(String[] args ) {
Vector v1 = new Vector();
System.out.pritnln("크기 : " + v1.size());
// 데이터 추가 첫번째 방법 : add(추가할 데이터)
// 반환값 : 추가성공(true) 실패하면(false) 반환한다.
v1.add("aaaa"); // 문자열 추가 가능
v1.add(new Integer(123)); // 2
v1.add(123) ; // 1
//저장하려고 하는 데이터는 객체여야 한다. : String 객체, Integer 객체 (int 형 데이터 를 객체화시킨것 : 레퍼클래스 )
// autoboxing : 일반 데이터를 컴퓨터가 자동으로 변환해주는것 1번이 2번으로 가는 것
v1.add('a') ;
v1.add(true); // 논리 데이터도 저장이 가능하다.
// 실수형 데이터 : double (8 byte), float( 4 byte )
boolean r = v1.add(3.14); // 그냥 숫자를 쓰면 기본적으로 double 형으로 저장된다.
//만약 folat 을 쓰고 싶으면 v1.add(3.14f)
System.out.println("현재크기 : " + v1.size());
System.out.println("반환값 : " + r ) ;
// 반환값이 true : add가 성공했다.
// 데이터 추가 두번째 방법 : addElement (추가할 데이터 ) ==>
이전 버전에서 사용하던 메서드
이전 버전의 프로그램도 사용할 수 있도록 하기 위해서 남아있는 메서드
v1.addElement("ccc");
System.out.println(" v1 : " + v1.toString());
동일하다 =
System.out.println(" v1 : " + v1);
중요 ** array = new int[] { 1,2,3,4,5} ;
System.out.println(Arrays.toString(array));
//Arrays.toString() 은 배열을 출력할때 항상 써줘야 한다. Vector 랑 ArrayList 는 상관이 없다.
데이터추가 세번째 방법 : add(index, 데이터 )
//'index' 번째에 '데이터' 를 끼워 넣는다.
// 'index' 는 0부터 시작한다.
// 반환값이 없다.
v1.add(1, "kkk");
//1번 index 에 kkk의 값을 넣어준다.
//원래 있던 값은 뒤로 한칸씩 밀려난다.
System.out.println("v1 : " + v1 ) ;
// 데이터를 수정하는 방법 ( 변경하는 방법 ) : set(index, 새로운 데이터 )
// 'index' 번쨰의 데이터를 '새로운 데이터' 로 덮어 쓴다.
// 반환값 : 원래의 데이터 가 반환값으로 나온다.
String temp = (String)v1.set(0, "zzz");
System.out.println("v1 : " + v1);
*(String)을 붙여준 이유
//String temp = v1.set(0, "zzz") ;
부모쪽에 있는 변수를 자식쪽에 있는 변수에 저장되는게 불가능 컴파일 에러가 뜸 -> 형변환을 해줘야함
System.out.println("v1 : " + v1 ) ;
System.out.println("반환값(원래의 데이터 ) : " + temp ) ;
--> temp 은 aaaa가 출력된다.
데이터 삭제 : remove (index)
-> 'index' 번째의 데이터를 삭제한다.
-> 반환값 : 삭제한 데이터
v1.remove(0);
System.out.pritnln("삭제 후 v1 " + v1) ;
temp = (String)v1.remove(0)
System.out.println("삭제된 자료 : " + temp) ;
System.out.println("삭제 후 : " + v1 ) ;
//데이터 삭제 : remove ( 삭제할 데이터 )
//삭제할 데이터를 찾아서 삭제한다.
//삭제할 데이터가 여러개이면 앞에서부터 한번에 하나씩 삭제된다.
//반환값 : 삭제를 성공하면 true 삭제를 실해하면 false 가 나온다.
//삭제할 데이터가 '정수형' 이거나 'char형 ' 일 경우에는 반드시 객체형으로 변환해서
사용해야 한다.
v1.remove("ccc");
System.out.println("삭제 후 v1 : " + v1 ) ;
//v1.remove(123);
//위에는 오류가 난다. 삭제할 때도 데이터를 객체로 등록해야 한다.
아래처럼 써주어야 한다.
v1.remove(new Integer(123));
System.out.println(" 삭제후 v1 " + v1);
vi.remove('a' ) ; 이부분도 오류가 난다
System.out.prinltn("삭제 후 v1 : " + v1 );
오류가 나는 이유 : 객체형으로 바꿔줘야 하기 때문에
vi.remove(new Character('a')) 로 바꾸어 줘야 한다.
v1.remove(3.14);
v1.remove(true);
System.out.println("삭제후 v1 : " + v1) ;
** 위에서 정수형이거나 char 형일때는 객체로 remove 를 해줘야 한다고 해줬잖아.
지금 3.14는 실수형이고 true 는 boolean 형이라서 객체로 써주지 않아도 된다.
** 123 123 두개가 있으면 앞에 있는거 지운다.
// 데이터 꺼내오기 get(index)
// 'index' 번째 데이터를 반환한다.
int data = (int)v1.get(0) ;
내생각 : 그러니까 주소를 불러오는거라고 생각해서 int 로 형변환을 한거 같기도 .....
System.out.println( " 0 번째 자료 : " + data ) ;
제네릭 타입
(Generic Type -> 객체를 선언할 때 < > 괄호 안에 그 Collection이 사용할 데이터의
타입을 정해주는 것을 말한다.
이런식으로 객체를 선언하게 되면 그 데이터 타입 이외의 다른 종류의 데이터를 저장할 수 없다.
단 제네릭으로 선언될 수 있는 데이터 타입은 클래스형이어야 한다.
그래서 int 는 Integer, boolean 은 Boolean, char 은 Character 등으로 사용해야 한다.
제네릭 타입으로 선언하게 되면 데이터를 꺼내올 때 형변환이 필요가 없다.
Vector<String> v2 = vew Vector<String>();
문자열인 String 데이터만 저장할 수 있는 Vector 객체 선언
Vector<Integer> v3 = new Vector<>();
// int 형 데이터만 저장할 수 있는 Vector 객체 선언
//앞에 선언할 때만 <> 안에 타입 적어주면 된다. 아래 보라 글씨 처럼
Integer 타입만 저장할 수 있는 Vector 근데 int 는 안된다.
v2.add("안녕하세요")
// v2.add(123) ; 제네릭타입과 다른 종류의 데이터를 저장 할 수 없다.
String temp2 = v2.ger(0); 형변환을 할필요가 없다. 왜냐하면 처음에 객체 선언 할때
이미 String 타입으로 정의를 해줬기 때문에
Vector<Vector> vv = new Vector<>() ; //배열로 치면 2차원 배열 같은것
Vector<Vector<Vector>> vvv = new Vector<>(); // 3차원 배열 같은것
데이터 전체 삭제 clear()
System.out.println(" v2 의 클리어 전 size : " + v2.size());
v2.cleasr();
System.out.println(" v2 의 클리어 후 size : " + v2.size());
System.out.println("-------------------------------------------");
v2.add("AAA");
v2.add("BBB");
v2.add("CCC");
v2.add("DDD");
v2.add("EEE");
Vector<String> v4 = new Vector ();
v4.add("BBB");
v4.add("EEE");
System.out.println("v2 : " + v2 );
System.out.println("v4 : " + v4);
데이터 삭제 : removeAll( Collection 객체 )
//'Collection 객체' 가 가지고 있는 데이터를 Vector 에서 찾아서 모두 삭제한다.
// 반환값 : 작업성공 ( true) , 작업실패 ( false)
v2.removeAll(v4); // v2가 가지고 있는 Vector 안에서 v4가 가지고 있는 것들을 다 지워라
System.out.println("삭제 후 v2 : " + v2);
System.out.println("삭제 후 v4 : " + v4); //v4는 이용하는 데이터라서 변하지 않는다.
v2.clear();
v2.add("AAA");
v2.add("BBB");
v2.add("CCC");
v2.add("DDD");
v2.add("EEE");
// 벡터의 데이터를 순서대로 가져와 모두 사용하고 싶으면 반복문을 사용하면 된다.
// (주로 for 문을 사용한다.)
for(int i = 0 ; i < v2.size() ; i++) {
System.out.println(i + "번째 자료 : " + v2.get(i));
}
System.out.println("---------------------------------");
다른 for 문
for(String str : v2) {
System.out.println(str);
}
// 처음부터 끝까지 순서대로 뽑아낼 수 밖에 없다.
}
}
댓글
댓글 쓰기