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);
}
List
-
종류 : 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 에 있는 데이터를 검색해서 사용하는 용도로 많이 쓰인다.
'Back-End > Java' 카테고리의 다른 글
[Spring] (2018.06.20) Final Project_2 (0) | 2018.06.20 |
---|---|
[Spring] (2018.06.14) Final Project_1 (0) | 2018.06.14 |
[Spring]1. Root context, Servlet context 차이점 (0) | 2018.05.17 |
[Java] Java의 기초문법 3 (오버로딩, 생성자, 다형성, 추상클래스, 인터페이스) (0) | 2018.05.16 |
[Java] Java의 기초문법 2 (조건문, 제어문, 반복문) (0) | 2018.05.16 |
최근댓글