on
JAVA 제네릭 타입 컬렉션 클래스
JAVA 제네릭 타입 컬렉션 클래스
728x90
JAVA 제네릭 타입 컬렉션 클래스
배열 데이터의 삽입/삭제 용이, 동적 할당 용이를 위해 제네릭 타입 컬렉션 클래스 사용
제네릭 : 자료형의 일반화 , 제네릭 타입에 객체만 넣을 수 있다, 엄격한 타입 checking
컬렉션 : 자료구조, 기본 자료형은 wrapper 클래스 사용, 제네릭 기법으로 구현
하나의 클래스를 만들어서 여러 자료형의 배열을 만들고 싶다면 제네릭 클래스로 멤버 추가
제네릭 클래스의 객체가 생성될 때 자료형이 지정되고, 생성 뒤에는 해당 자료형만 담을 수 있음
Iterator : 반복자 객체, 컬렉션에서 요소의 순차 검색을 위한 인터페이스
- 모든 컬렉션은 Iterator를 통해 순차적으로 반복자 객체를 얻을 수 있다.
Vector v = new Vector(); Iterator it = v.iterator(); // 반복자 객체 얻기 while(it.hasNext()){ int n = it.next(); // 모든 요소 방문해 다음 요소 리턴 }
List 인터페이스 : ArrayList 동기화 불가능, Vetor 동기화 가능
-가변적 길이의 배열 객체 생성
-객체들의 삽입/삭제/검색 메서드 제공
add()를 이용하여 요소를 삽입
get()을 이용하여 요소를 검색
Vector v = new Vector (7); 용량이 7인 벡터
int n = v.size(); 요소 개수 반환
int c= v.capacity(); 용량 반환
v.add(2,100); 요소 중간에 삽입
Integer obj = v.get(1); 인덱스 1번 요소 객체 얻기
int i = obj.intValue(); 값 얻기
v.remove(1); 요소 삭제
Set 인터페이스 : HashSet 집합 (저장 순서 유지 X, 중복 허용 X)
-정렬 순서 기준 X, 반복 기준 X
-hashCode()로 해시값을 계산한다, equals()로 같은 부류에서 확인한다.
-객체를 전달받을 때 값이 같은지 비교하기 위해서 hasCode(), equals()를 재정의한다
Map 인터페이스 : HashMap 파이썬의 딕셔너리와 비슷
Arraylist와 Vetor는 순서를 지정해 가변적인 배열처럼 사용한다.
HashSet, HashMap은 순서를 지정 X, 반복자 객체를 통해 접근하고, 해쉬 코드와 equal 재정의한다.
public class IteratorUsage{ ArrayList list = new ArrayList(); list.add("First"); list.add("Second"); list.add("Third"); list.add("Fourth"); Iterator itr = list.iterator(); System.out.println("삭제 전"); while(itr.hasNext()){ String current = itr.next(); System.out.println(current); if(current.compareTo("Third") == 0) itr.remove(); } itr = list.iterator(); System.out.println("삭제 후"); while(itr.hasNext()) System.out.println(itr.next()); } }
public class HashCode{ int num; HashCode(int n){ num = n; } public String toString(){ return String.valueOf(num); } @Override public int hashCode(){ return (num%3); } @Override public boolean equals(Object obj){ if(obj != null && obj instanceof HashCode){ HashCode hash = (HashCode)obj; if(hash.num == num) return true; } return false; } public static void main(String[] args){ HashSet hset = new HashSet(); hset.add(new HashCode(10)); hset.add(new HashCode(20)); hset.add(new HashCode(20)); System.out.println("데이터 수: " + hset.size()); Iterator itr = hset.iterator(); while(itr.hasNext()) System.out.println(itr.next()); } }
728x90
from http://psy-er.tistory.com/94 by ccl(A) rewrite - 2021-12-05 02:02:07