반응형

Java의 기초문법 1 (Collection Framework (Set, List, Map))


 

이전에 공부했던 Collection Framework 를 절대 잊지 말고 복습해보자.

 

 

 

Generic : 클래스 생성시 미리 타입을 지정할 수 있다. 

 

예를들어,

Box<Object> box = new Box();
box.setObj(new Object()); 
Object obj = box.getObj(); //getObj 타입 : Object
 
Box<String> box2 = new Box<>();
box2.setObj("hello"); //String 값을 넣고 싶을 때 
String str = box2.getObj(); //여기서 형변환이 필요없다. getObj 타입 : String

 

Generic을 사용함으로써 선언할때는 가상의 타입으로 선언하고, 사용시에는 구체적인 타입을 설정함으로써

다양한 타입의 클래스를 이용하는 클래스를 만들 수 있다.

 

Generic을 사용하는 대표적인 클래스는 컬렉션 프레임워크와 관련된 클래스이다.

 

 

Set

중복 X , 순서 X 인 자료구조

  • 종류 : Hashset, TreeSet

  • 특징 : add 함수 사용 (boolean 값 반환) -> 중복 값이 있는 경우 1개의 값은 false 출력 

 

값을 출력할 경우 아래와 같이 사용한다.

while (iter.hasNext()) {   // 꺼낼 것이 있다면 true 리턴.          
	String str = iter.next(); 
	// next()메소드는 하나를 꺼낸다. 하나를 꺼내면 자동으로 다음것을 참조한다.
	System.out.println(str);
}
​
index 가 필요하지 않기 때문에 for문이 아닌 while문을 사용하여 출력한다.

 

List

중복 O , 순서 O 인 자료구조
  • 종류 : ArrayList(가장 많이 사용) 

  • 특징 : add 함수로 값 넣기 

 

list는 순서가 있기 때문에 index 를 이용하여 출력 가능 (for문)

for(int i = 0; i < list.size(); i++){
	String str = list.get(i);
	System.out.println(str);
}
=> 순차적으로 대량의 데이터를 엑세스하거나 입력할때 유리한 방식
 
 

Map

key 와 value를 쌍으로 저장하는 자료구조 (key 중복 X , value 중복 O)

특징 : put 으로 값 넣기 , get 값 꺼내기 

// map에 저장된 모든 key들을 Set자료구조로 꺼냅니다.
Set<String> keys = map.keySet();

// Set자료구조에 있는 모든 key를 꺼내기 위하여 Iterator를 구합니다.
Iterator<String> iter = keys.iterator();

while (iter.hasNext()) {
	// key를 꺼냅니다.
	String key = iter.next();
	// key에 해당하는 value를 꺼냅니다.
	String value = map.get(key);
	// key와 value를 출력합니다.
	System.out.println(key + " : " + value);
}

 

=>  여러 건의 데이터에서 원하는 특정 데이터에 접근(검색)할 때 유리한 방식

 

 

각 구현 class들의 차이점

Map계열 
  HashMap 은 데이터 입출력이 동기화되지 않고 처리속도가 빠름

  HashTable 은 모든 입출력이 동기화(토근을 부여받아 순차적으로 객체에 접근)되며 
 처리속도는 다소 떨어지게 된다. 
List계열
  Vector가 synchronized(동기화) 되는 반면  ArrayList는 그렇지 않다.

 

* ArrayList 와 HashTable(HashMap)의 차이점
ArrayList의 입력방식 
add(Object o), add(int index, Object o), set(int index, Object o)…etc
# 데이터를 검색하기 위해서는 처음부터 끝까지 돌거나 사용자가 index를 알아야함
index정보를 알고 있다면 ArrayList가 HashMap보다 빠름

HashMap의 입력방식
      pub(Object key, Object value)
      key 값을 Object로 갖고 있기에 자바에서 사용가능한 모든 클래스 가능
      (복잡한 값을 갖는 Object 도 키로 활용가능)
# 키 값을 이용해 바로 원하는 정보를 얻어낼 수 있기에 검색능력이 탁월하다.

 

* 용도의 차이점  
 ArrayList 의 경우 단순히 데이터를 입력하고 데이터를 출력하는 용도로
 HashMap 의 경우 데이터를 캐쉬해서 특정 key 값으로 HashMap 에 있는 데이터를 검색해서 사용하는 용도로 많이 쓰인다.

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기