안녕하세요. pitang입니다.
Map 컬렉션에 대한 퀴즈를 살펴보겠습니다.
Junit으로 메서드를 검증하여 오류가 없으면 정답인 퀴즈들입니다!
Quiz 1번
1:2, 2:4 두 개의 엔트리를 리턴하는 메서드를 작성하세요.
아래의 junit으로 오류를 확인하세요.
class Ex01Test { @Test void test() { Ex01 e = new Ex01(); Map<Integer, Integer> map = new HashMap<>(); e.put(map); assertEquals(2, map.get(1)); assertEquals(4, map.get(2)); assertEquals(2, map.size()); assertFalse(map.containsKey(3)); } }
⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️
public class Ex01 { public void put(Map<Integer, Integer> map) { //1:2, 2:4 두개의 엔트리를 넣어주면 됨. map.put(1, 2); map.put(2, 4); } }
Quiz 2번
1:2, 2:4 두 개의 엔터리를 가지고 있는 map을 리턴하는 메서드를 작성하세요.
아래의 junit으로 오류를 확인하세요.
class Ex02Test { @Test void test() { Ex02 e = new Ex02(); Map<Integer, Integer> map = e.put(); assertEquals(2, map.size()); assertEquals(2, map.get(1)); assertEquals(4, map.get(2)); assertFalse(map.containsKey(3)); } }
⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️
public class Ex02 { public Map<Integer, Integer> put() { //map을 만들어서 리턴 //1:2, 2:4를 추가 Map<Integer, Integer> map = new HashMap<>(); map.put(1,2); map.put(2,4); return map; } }
Quiz 3번
key : value 는 총 다섯개 이고 key는 1 ~ 5 까지, value 는 key * 3 의 값을 가지고 있는 map을 리턴하는 메서드를 작성하세요.
아래의 junit으로 오류를 확인하세요.
class Ex03Test { @Test void test() { Ex03 e = new Ex03(); Map<Integer,Integer> map = e.triple(); assertEquals(5, map.size()); assertEquals(3, map.get(1)); assertEquals(6, map.get(2)); assertEquals(9, map.get(3)); assertEquals(12, map.get(4)); assertEquals(15, map.get(5)); } }
⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️
public class Ex03 { public Map<Integer, Integer> triple() { //map을 만들어서 return // key:value 총 5개 // key - 1~5까지 // value - key * 3 Map<Integer, Integer> map = new HashMap<>(); for(int i = 1; i <= 5 ; i++) { map.put(i, i*3); } return map; } }
Quiz 4번
list에 있는 String을 key, key의 문자열의 길이를 value로 가지고 있는 map을 리턴하는 메서드를 작성하세요.
아래의 junit으로 오류를 확인하세요.
class Ex04Test { @Test void test() { Ex04 e = new Ex04(); Map<String, Integer> m = e.length(Arrays.asList(new String[] {"java","spring","apple","jeju", "bts"})); assertEquals(5, m.size()); assertEquals(4, m.get("java")); assertEquals(6, m.get("spring")); assertEquals(5, m.get("apple")); assertEquals(4, m.get("jeju")); assertEquals(3, m.get("bts")); } }
⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️
public class Ex04 { public Map<String, Integer> length(List<String> strs) { // list에 있는 String을 key, 문자열(key)의 길이를 value // map을 만들어서 return Map<String, Integer> map = new HashMap<>(); for(String str : strs) { map.put(str, str.length()); } return map; } }
Quiz 5번
param이 가지고 있는 value를 2배한 새로운 map을 리턴하는 메서드를 작성하세요. 단, param이 변경되면 안됩니다.
아래의 junit으로 오류를 확인하세요.
class Ex05Test { @Test void test() { Map<Integer, Integer> map1 = new HashMap<>(); map1.put(1, 3); map1.put(2, 10); map1.put(100, 2); Ex05 e = new Ex05(); Map<Integer, Integer> map2 = e.doubling(map1); assertEquals(3, map2.size()); assertEquals(6, map2.get(1)); assertEquals(20, map2.get(2)); assertEquals(4, map2.get(100)); assertEquals(3, map1.get(1)); assertEquals(10, map1.get(2)); assertEquals(2, map1.get(100)); Map<Integer, Integer> map3 = e.doubling2(map1); assertEquals(3, map3.size()); assertEquals(6, map3.get(1)); assertEquals(20, map3.get(2)); assertEquals(4, map3.get(100)); assertEquals(3, map1.get(1)); assertEquals(10, map1.get(2)); assertEquals(2, map1.get(100)); } }
⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️
public class Ex05 { public Map<Integer, Integer> doublint(Map<Integer, Integer> param) { //param이 가지고 있는 value를 2배한 새 맵을 만들어서 return //단, param이 변경되면 안됨. Map<Integer, Integer> map = new HashMap<>(); //keySet으로 탐색 Set<Integer> keys = param.keySet(); for(Integer key : keys) { Integer value = param.keySet(); map.put(key, value*2); } return map; } public Map<Integer, Integer> doubling2(Map<Integer, Integer> param) { Map<Integer, Integer> map = new HashMap<>(); //entrySet 으로 탐색 Set<Map.Entry<Integer,Integer>> entries = param.entrySet(); for(Map.Entry<Integer,Integer> entry : entries) { Integer key = entry.getKey(); Integer value = entry.getValue(); map.put(key,value*2); } return map; } }
Quiz 6번
파라미터 map의 각 값의 2배를 저장하여 리턴하는 메서드를 작성하세요.
아래의 junit으로 오류를 확인하세요.
class Ex06Test { @Test void test() { Ex06 e = new Ex06(); Map<Integer,Integer> map = new HashMap<>(); map.put(1, 300); map.put(200, 6); map.put(-1, 7); e.doubling(map); assertEquals(3, map.size()); assertEquals(600, map.get(1)); assertEquals(12, map.get(200)); assertEquals(14, map.get(-1)); } }
⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️
public class Ex06 { public void doubling(Map<Integer, Integer> map) { //파라미터 map의 각 값을 2배로 저장해 리턴 Set<Integer> keys = map.keySet(); for(Integer key : keys) { Integer value = map.get(key); map.put(key, value*2); } } }
Quiz 7번
param의 size는 2, key는 "a", "b" 이다.
두 value를 서로 바꾼(swap) map을 만들어서 리턴하는 메서드를 작성하세요. 단, param이 변경되면 안됩니다.
아래의 junit으로 오류를 확인하세요.
class Ex07Test { @Test void test() { Ex07 e = new Ex07(); Map<String, String> map1 = new HashMap<>(); map1.put("a", "apple"); map1.put("b", "banana"); Map<String, String> map2 = e.swap(map1); assertEquals(2, map2.size()); assertEquals("apple", map2.get("b")); assertEquals("banana", map2.get("a")); assertEquals(2, map1.size()); assertEquals("apple", map1.get("a")); assertEquals("banana", map1.get("b")); } }
⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️
public class Ex07 { public Map<String, String> swap(Map<String, String> param) { //param의 size가 2 //param의 키는 "a","b" 이다. //두 value를 서로 바꾼(swap) map을 만들어서 return //param은 변경 x Map<String, String> map = new HashMap<String,String>(); map.put("b", param.get("a")); map.put("a", param.get("b")); return map; } }
Quiz 8번
param의 size는 2, key는 "a", "b" 이다. 두 value를 서로 바꾼값을 저장해 리턴하는 메서드를 작성하세요.
아래의 junit으로 오류를 확인하세요.
class Ex08Test { @Test void test() { Ex08 e = new Ex08(); Map<String,String> map = new HashMap<>(); map.put("a", "apple"); map.put("b", "banana"); e.swap(map); assertEquals(2, map.size()); assertEquals("banana", map.get("a")); assertEquals("apple", map.get("b")); } }
⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️
public class Ex08 { public void swap(Map<String, String> param) { //param size : 2 //param 키는 "a", "b" //param 각 값을 변경 String bValue = param.get("b"); param.put("b", param.get("a"); param.put("a", bValue); } }
Quiz 9번
str의 문자가 몇 번 나오는지 세어서 문자를 key, 갯수(몇 번)를 value로 갖는 map을 리턴하는 메서드를 작성하세요.
아래의 junit으로 오류를 확인하세요.
class Ex09Test { @Test void test() { Ex09 e = new Ex09(); String s = "keysvalues"; Map<Character, Integer> map = e.countCharacter(s); assertEquals(8, map.size()); assertEquals(2, map.get('e')); assertEquals(2, map.get('s')); assertEquals(1, map.get('k')); assertEquals(null, map.get('z')); } }
⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️
public class Ex09 { public Map<Character, Integer> countCharacter(String str) { for(int i = 0; i < str.length(); i++) { Character c = str.charAt(i); if(map.containsKey(c)) { Integer v = map.get(c); map.put(c, v+1); } else { map.put(c,1); } } return map; } }
Quiz 10번
map1과 map2에 key가 둘 다 있으면 value를 서로 더해 저장, 한쪽에만 있으면 그냥 저장하는 map을 리턴하는 메서드를 작성하세요.
아래의 junit으로 오류를 확인하세요.
class Ex10Test { @Test void test() { Ex10 e = new Ex10(); Map<String, Integer> m1 = new HashMap<>(); Map<String, Integer> m2 = new HashMap<>(); m1.put("kim", 3); m1.put("bob", 7); m1.put("son", 10); m2.put("bob", 77); m2.put("son", 99); m2.put("ji", 13); Map<String, Integer> res = e.sum(m1, m2); assertEquals(4, res.size()); assertEquals(3, res.get("kim")); assertEquals(84, res.get("bob")); assertEquals(109, res.get("son")); assertEquals(13, res.get("ji")); } }
⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️
public class Ex10 { public Map<String, Integer> sum(Map<String, Integer> map1, Map<String, Integer> map2) { //map1과 map2에 키가 둘 다 있으면 밸류를 더해서 추가 //한쪽에만 있으면 그냥 추가 //새 map을 만들어서 리턴 Map<String, Integer> result = new HashMap<>(); //map1의 entry들을 result에 옮김. Set<String> keys1 = map1.keySet(); for(String key : keys1) { result.put(key, map1.get(key)); } //map2의 entry들을 옮기면서 중복 확인. Set<String> keys2 = map2.keySet(); for(String key : keys2) { if(result.contaisKey(key)) { Integer v = result.get(key); result.put(key, v+map2.get(key)); } else { result.put(key, map2.get(key)); } } return result; } }
감사합니다.
*m1 맥북을 사용 중입니다.*
'6개월 대장정 > JAVA 퀴즈' 카테고리의 다른 글
28일차 - 컬렉션 프레임 워크 - Map컬렉션 Quiz(2) (0) | 2021.09.27 |
---|---|
26일차 - 컬렉션 프레임 워크-Set컬렉션 Quiz (0) | 2021.09.20 |
25일차 - 컬렉션 프레임 워크-List컬렉션 Quiz (0) | 2021.09.17 |