Hashmap 을 ArrayList 로 변환하는 방법에 대한 코드 예제가 있어서 약간 추가해서 테스트해보고 적어둔다.
HashMap 은 Map 인터페이스의 한 종류로 key 와 value 를 묶어서 하나의 entry로 저장한다는 특징을 가지고 있다.
key 값은 중복이 불가능하고 value 값은 중복이 가능하며, null 값도 사용 가능하다.
해싱 기법으로 데이터를 저장하고, 데이터가 많아도 검색이 빠르다.
멀티쓰레드에서 동시에 HashMap key - value 를 사용하면 문제가 될 수 있다.
멀티쓰레드에서는 HashTable을 쓴다.
HashMap 을 ArrayList 로 변환하는 3가지 방법이 있다.
HashMap key 를 ArrayList 로 변환, HashMap value 를 ArrayList 로 변환, HashMap key-value 를 ArrayList 로 변환할 수 있다.
Iterator 인터페이스를 사용할 수 없는 컬렉션인 Map 에서 Iterator 인터페이스를 사용하기 위해서는 Map 에 keySet(), entrySet() 메소드를 사용하여 Set 객체를 반환한 후 Iterator 인터페이스를 사용하면 된다.
import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Map.Entry; import java.util.Set;
public class HashMapToArrayList {
public static void main(String[] args) { //Creating a HashMap object HashMap<String, String> map = new HashMap<String, String>();
//Adding elements to HashMap map.put("1", "이순신"); map.put("2", "강감찬"); map.put("5", "주몽"); map.put("6", "대조영"); map.put("3", "을지문덕"); map.put("4", "연개소문");
// Getting Set of keys Set<String> keySet = map.keySet();
// ArrayList 의 key 생성 ArrayList<String> listOfKeys = new ArrayList<String>(keySet); System.out.println("ArrayList Of Keys :"); for (String key : listOfKeys) { System.out.println(key); } System.out.println("--------------------------");
// Getting Collection of values Collection<String> values = map.values();
// ArrayList 의 값 생성 ArrayList<String> listOfValues = new ArrayList<String>(values); System.out.println("ArrayList Of Values :"); for (String value : listOfValues) { System.out.println(value); } System.out.println("--------------------------");
//Getting the Set of entries Set<Entry<String, String>> entrySet = map.entrySet();
// ArrayList 의 Entry objects 생성 ArrayList<Entry<String, String>> listOfEntry = new ArrayList<Entry<String,String>>(entrySet); System.out.println("ArrayList of Key-Values :"); for (Entry<String, String> entry : listOfEntry) { System.out.println(entry.getKey()+" : "+entry.getValue()); }
// entrySet().iterator() Iterator<Map.Entry<String,String>> iteratorE = map.entrySet().iterator(); System.out.println("------- Iterator<Map.Entry<String,String>> -----------"); while(iteratorE.hasNext()) { Map.Entry<String, String> entry = (Map.Entry<String, String>) iteratorE.next(); String key = entry.getKey(); String value = entry.getValue(); System.out.println("key : " + key + " , value : "+value); } // 방법 05 : keySet().iterator() Iterator<String> iteratorK = map.keySet().iterator(); System.out.println("------- Iterator<String> iteratorK -----------------"); while (iteratorK.hasNext()) { String key = iteratorK.next(); String value = map.get(key); System.out.println("key : " + key + ", value : " + value); }
} }
|
참고하면 도움이 될 자료
ArrayList and HashMap : https://link2me.tistory.com/1210
https://javaconceptoftheday.com/convert-hashmap-to-arraylist-in-java/
Map 동영상 강좌
https://programmers.co.kr/learn/courses/9/lessons/260#
Java의 정석, 11. 컬렉션 프레임웍 : https://www.youtube.com/watch?v=y3qLfTOmONE