[자바 기초] 컬렉션 Collection - 2
2021, Jul 20
컬렉션 - 2
맵 Map
맵의 정의
- 컬렉션 프레임 워크에서 List와 Set과는 다르게 사용됨으로써 독자적인 인터페이스를 가지고 있는 컬렉션 프레임워크
- 다른 컬렉션과는 다르게 키Key 와 값Value 로 구성되어 있으며 이를 한 쌍으로 묶어서 Map 인터페이스 내부 클래스 Map.Entry로 다뤄짐
- 저장되있는 데이터에 접근하려면 키를 통해 접근해야하기 때문에 키는 고유한 값을 갖는다.
맵을 구현한 컬렉션
- HashTable
- HashMap
- Properties
- TreeMap
해쉬맵 HashMap
정의
- Map 인터페이스를 구현한 클래스로 해싱Hashing 을 이용하여 많은 양의 데이터를 검색하는데 있어서 뛰어난 성능을 지님
Map map = new HashMap(); // Map 인터페이스 다형성을 이용한 생성 HashMap hMap = new HashMap(); // 직접 생성
주요 메서드
Return Type | Method | Description |
---|---|---|
V | put(K key, V value) | 주어진 키와 값을 추가, 저장이 되면 값을 리턴 |
boolean | containsKey(Object Key) | 주어진 키가 있는지 확인하여 결과 리턴 |
boolean | containsValue(Object value) | 주어진 값이 있는지 확인하여 결과 리턴 |
Set<Map.Entry<K,V>> | entrySet() | 키와 값의 쌍으로 구성된 모든 Map.Entry 객체를 set에 담아서 리턴 |
V | get(Object key) | 주어진 키의 값을 리턴 |
boolean | isEmpty() | 컬렉션이 비어있는지 여부 |
Set<K> | keySet() | 모든 키를 Set 객체에 담아서 리턴 |
int | size() | 저장된 키의 총 수를 리턴 |
Collection<V> | values() | 저장된 모든 값을 Collection에 담아서 리턴 |
void | clear() | 모든 Map.Entry를 삭제함 |
V | remove(Object key) | 주어진 키와 일치하는 Map.Entry 삭제, 삭제가 되면 값을 리턴 |
HashMap에 저장된 데이터를 연속적으로 처리하는 방법
-
entrySet()
key-value 쌍으로 연결된 값들을 Entry로 묶어서 Set 형태로 반환하는 메서드
HashMap map = new HashMap(); map.put("user1", "123"); map.put("user2", "123"); map.put("user3", "123"); Set set = map.entrySet(); // entrySet()은 맵에 저장된 Key,Value 값을 Entry로 다뤄서 Set으로 반환 Iterator it = set.iterator(); // set에 저장된 내부데이터에 접근하기 위해서 Iterator 생성 while (it.hasNext()) { Map.Entry me = (Map.Entry) it.next(); // Set에 저장된 데이터 타입이 Map.Entry이기 때문에 iterator을 통해서 Map.Entry에 데이터를 다시 담는다 System.out.println(entry.getKey() + "=" + entry.getValue()); }
-
keySet()
HashMap map = new HashMap(); map.put("user1", "123"); map.put("user2", "123"); map.put("user3", "123"); Set keys = map.keySet(); Iterator it = keys.iterator();. while (it.hasNext()) { String key = (String) it.next(); // next() 반환자가 object임 String value = (String) map.get(key); // get()도 반환자가 Object 여서 String으로 형변환 System.out.println(key + "=" + value); }
프로퍼티스 Properties
정의
- Key, Value 값의 데이터 타입을 String으로 제한한 Map 컬렉션
- .properties 확장자를 가진 데이터 파일을 다루는데 주로 사용
- 문자열만 다루는 컬렉션으로 프로그램의 유지 보수를 편리하게 함
- DB의 연결 정보를 저장하는 용도로 많이 사용
주요 메서드
Return Type | Method | Description |
---|---|---|
void | setProperties(Key key, Value value) | Properties에 데이터를 저장하는 기능 |
boolean | containsKey(Object key) | 매개변수로 전달되는 key값을 포함하고 있는지 확인 |
boolean | containsValue(Object value) | 매개변수로 전달되는 value값을 포함하고 있는지 확인 |
Set | entrySet() | properties에 저장된 데이터를 Set 컬렉션으로 저장하여 반환 |
Object | get(Object key) | 매개변수로 전달하는 key값을 반환, 만약 없다면 null 반환 |
String | getProperty(String key) | 매개변수로 전달하는 key값을 반환, 만약 없다면 null 반환 |
void | store(OutputStream os, String comment) | Properties에 저장된 데이터를 외부의 파일로 옮기기 위한 메서드 |
void | storeToXml(OutputStream os, String comment) | Properties에 저장된 데이터를 외부의 XML로 옮기기 위한 메서드 |
void | load(InputStream is) | 외부 파일로부터 데이터를 입력 받을 수 있는 메서드 |
void | loadFromXml(InputStream is) | 외부 XML 파일로부터 데이터를 입력받을 수 있는 메서드 |
예제
public void test() {
Properties prop = new Properties();
prop.setProperty("driver", "oracle.jdbc.driver.OracleDriver");
prop.setProperty("url", "jdbc.oracle.thin:@127.0.0.1:1521:xe");
prop.setProperty("user", "kh");
prop.setProperty("password", "kh");
System.out.println(prop);
try {
prop.store(new FileOutputStream("driver.properties"), "jdbc driver");
prop.store(new FileWriter("driver.txt"), "jdbc driver");
prop.storeToXML(new FileOutputStream("driver.xml"), "jdbc driver");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}