본문 바로가기
명품 자바

명품자바 7장 제네릭,컬렉션

by hoshi03 2023. 12. 31.

 

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