Java프로그램을 작성하다가 Color값 배열을 만들고 인덱스로 배열 값을 가져오다가 그 반대로 배열 값을 가지고 인덱스를 구해야 하는 상황이 발생하였다. 참고하려고 정리한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | import java.awt.Color; import java.util.HashMap; import java.util.Map; public class HashMap_Get_Key_Data { public static void main(String[] args) { Map<Color, Integer> mapColor = new HashMap<>(); // HashMap 데이터 추가 mapColor.put(Color.RED, 0); mapColor.put(Color.ORANGE, 1); mapColor.put(Color.YELLOW, 2); mapColor.put(Color.GREEN, 3); mapColor.put(Color.BLUE, 4); // Key값으로 Value값을 얻는다. System.out.println("key Color.ORANGE's Value : " + mapColor.get(Color.ORANGE)); System.out.println("key Color.GREEN's Value : " + mapColor.get(Color.GREEN)); // Value값으로 Key값을 얻는다. System.out.println("Value 0's Key : " + getKey(mapColor, 0)); System.out.println("Value 4's Key : " + getKey(mapColor, 4)); } // hashmap에서 value로 key 찾기 private static <K, V> K getKey(Map<K, V> map, V value) { for (K key : map.keySet()) if (value.equals(map.get(key))) return key; return null; } } | cs |
------------------------ 출력 결과 ---------------------
key Color.ORANGE's Value : 1
key Color.GREEN's Value : 3
Value 0's Key : java.awt.Color[r=255,g=0,b=0]
Value 4's Key : java.awt.Color[r=0,g=0,b=255]
key Color.ORANGE's Value : 1
key Color.GREEN's Value : 3
Value 0's Key : java.awt.Color[r=255,g=0,b=0]
Value 4's Key : java.awt.Color[r=0,g=0,b=255]