Vector<E> : 가변 배별 컬렉션 클래스이다
벡터 중간에 요소를 삽입시 해당 인덱스에 요소를 삽입하고 기존 인덱스와 그 뒤에 있는 요소들을 모두 뒤로 이동시킨다
v.add(2,100); 형태로 중간에 삽입가능하다
벡터에 get을 사용하면 존재하는 요소를 리턴한다
int i = v.get(1);
컬렉션에 값을 넣을때는 자동 박싱을, 값을 가져올때는 자동 언박싱을 한다!
ArrayList<E> : 벡터와 거의 동일하고, 멀티스레드간에는 동기화가 되지 않지만, 단일 스레드일때는 벡터보다 빠르다
add,get,indexof,toarray 등의 메서드가 있다
Iterator : 순차 검색을 이용해서 사용한다
Vector<Integer> v = new Vector<Integer>();
Iterator<Integer> it = v.iterator();
이렇게 해서 벡터 v 의 반복자를 호출해서 각 요소를 순차적으로 검색할 수 있다
hasNext()로 방문할 요소가 남아 있는지 확인하고
next()로 다음 요소를 리턴한다
remove()로 마지막에 리턴한 요소를 제거한다
HaspMap(K,V) : 키와 값 쌍으로 이루어진 요소
put(key,val) - 요소 삽입 get(key) - 키에 해당하는 값 리턴
해시맵은 삽입,삭제,검색이 매우 빠르지만 인덱스로 접근이 불가능하고 '키'로만 가능하다!
해시맵 주요 메서드
containsKey(key), containsValue(Value)
Set<K> KeySet <- 해시맵의 모든 키를 담은 Set<K> 컬렉션을 리턴한다
해시맵 전체 검색
set을 이용해서 모든 키를 알아낸 후에, 키에 대해서 하나씩 값을 가져온다
Set<String> keys = h.keySet(); <- h 해시맵에 있는 모든 키를 Set 컬렉션으로 가져온다
가져온걸 반복자를 통해서 순차 검색이 가능하다
하는건 코드로 해보자
LinkedList<E> 리스트 인터페이스를 구현, 양방향으로 접근 가능해 맨 앞, 맨 뒤, 중간에 요소 삽입이 가능하다
Collectins 클래스
sort, reverse 등으로 정렬할때 사용한다, 사용자가 클래스를 작성한 경우에는 comparable이나 compartor로 compareto를 상속받아서 재정의해서 정렬할때 사용해야한다
제네릭 클래스 작성하기
<T> 형태로 타입 매개변수를 작성한다
제레닉 클래스 내에서 제네릭 타입을 가진 객체는 생성할 수 없다
class Myclass<T>{
T val;
void set(T a){
val = a;
}
T get(){
return val;
}
}
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Myclass<Integer> my = new Myclass<>();
my.set(1234);
System.out.println(my.get());
Myclass<String> mys = new Myclass<>();
mys.set("tset");
System.out.println(mys.get());
}
}
'명품 자바' 카테고리의 다른 글
명품자바 6장 모듈, 패키지 (1) | 2023.12.31 |
---|---|
명품자바 5장 (1) | 2023.12.26 |
명품자바 4장 (1) | 2023.12.23 |
가비지 발생시점 (0) | 2023.11.17 |