상세 컨텐츠

본문 제목

고급자바(1217-1)

자바

by 정재화니 2022. 12. 17. 14:54

본문

Collection Framework(컬렉션 프레임워크)에 대하여 공부했다.

Vector에 대하여 배웠는데 Vector란 Collection 프레임워크의 일부이며 java.util 패키지에 소속되어 있다.

ArrayList와 동일한 구조를 가지며 배열의 크기가 늘어나고, 줄어듬에 따라서 자동으로 크기가 조절이 된다.

 

객체 생성 방법 

Vector v1 = new Vector();

 

1. 데이터를 추가할때는 2가지 방법이 있다.

1) 'add(추가할데이터)'를 사용하고 반환값은 성공(true), 실패(false)로 나온다.

ex) v1.add("aaaa");
      v1.add(new Integer(111));
      v1.add(1234);   auto boxing 
      v1.add('a');  => Character
      v1.add(true);
2) 'add(index, 데이터)' 는  'index'번째 '데이터'를 끼워 넣고 반환값이 없다.
ex) v1.add(1, "KKKK");

 

2. 데이터 수정하기

  데이터 수정 : set(index, 새로운값)
  배열변수[index] = 새로운값
  반환값 : 변경되기 전의 데이터 

ex) String temp = (String) v1.set(0, "zzzz");   Vector 에서 나오는 값은 Object로 나온다 

 

3. 데이터 삭제하기

 데이터 삭제 : remove(index) / 'index'번째 데이터를 삭제한다. 반환값은 삭제된 데이터 이다.

ex) v1.remove(0); => index 번호를 찾아서 삭제할 수 있고
ex) v1.remove("CCCCC"); => 삭제할 데이터를 찾아서 삭제 할 수 있다. 
- 삭제할 데이터가 여러개이면 앞에서 부터 삭제하며 반환값은 삭제성공 : true, 삭제실패: false 이다.

* 전체 데이터를 삭제하고 싶으면 v1.clear(); 를 사용하면 된다.

 

벡터의 데이터를 순서대로 가져와 사용할때는 반복문을 사용하면 된다.(for문)

ex)

v1.add("AAAA");
v1.add("BBBB");
v1.add("CCCC");
v1.add("DDDD");
v1.add("EEEE");

for(int i = 0; i < v2.size(); i++) {
System.out.println(i + "번째 자료: " + v2.get(i));
}
System.out.println("-----------------------------------");

}

↓처럼 나온다.

제네릭타입 (Generic Type)

   클래스 내부에서 사용할 데이터의 타입을 객체를 생성할때 외부에서 지정하는 기법
   객체를 선언 할 때괄호(< >)안에 그 객체의 내부에서 사용할 데이터의 타입을 정해주는것을 말한다.
   이런식으로 선언하게 되면 지정한 데이터타입 이외의 다른 데이터를 저장할 수 없다.
   제네릭으로 선언될 수 있는 데이터타입은 클래스형이어야 한다.
   그래서 int는 Integer, boolean은 Boolean, char는 Character 등으로 대체해서 사용해야 한다.
   제네릭타입으로 선언하게 되면 데이터를 꺼내올 떄별도의 형변환이 필요없다.

 

ArrayList는 기본적으로 사용법이 Vector와 같다.

 

contains(비교데이터)  => List에 '비교데이터'가 있으면 true, 없으면 false를 반환한다.
indexOf(비교데이터) => List에 '비교데이터'가 있으면 '비교데이터'가 있는 index값을 반환하고, 없으면 -1을 반환한다.

lastIndexOf(비교데이터) => indexOf()는 앞에서부터 검색하고 lastIndexOf()는 뒤에서부터 검색한다.

toArray() => List 안의 데이터를 배열로 변환해서 반환한다. => 기본적으로 Object형 배열로 변환한다.
toArray(new 제네릭타입[0]) => 제네릭 타입의 배열로 반환한다.

 

예시문제로 ArrayList에 이름을 입력받아 '김'씨성을 가진 사람의 이름을 출력해보았다.(Scanner 객체 사용)

 

Scanner sc = new Scanner(System.in);
ArrayList<String> list = new ArrayList();
System.out.println("5명의 이름을 입력하세요");
for(int i = 1; i <= 5; i++) {
System.out.println(i + "번째 사람 이름 : ");
String name =sc.nextLine();
list.add(name);
}

 -- 반복문을 통하여 5명의 사람을 입력받고 list에 추가해준다.


System.out.println("김씨성...");

for(int i = 0; i < list.size(); i++) {

     더 많은 방법이 있지만 4가지만 알아보았다.

 

      if(list.get(i).indexOf("김") == 0) {
      System.out.println(list.get(i));   }


      if(list.get(i).substring(0, 1).equals("김") ) {
      System.out.println(list.get(i));   }

      if(list.get(i).charAt(0) == '김' ) {
      System.out.println(list.get(i));   }

     if(list.get(i).startsWith("김")) {
     System.out.println(list.get(i));  }

 

}

 

 

 

'자바' 카테고리의 다른 글

고급자바_1222-1  (0) 2022.12.22
고급자바_1221-1  (0) 2022.12.21
고급자바_1220-1  (0) 2022.12.20
고급자바1219-2  (0) 2022.12.19
고급자바 1219-1  (0) 2022.12.19

관련글 더보기