Конвертировать картуна карту - PullRequest
4 голосов
/ 15 апреля 2019

Я хочу преобразовать карту в карту

До сих пор я пробовал ниже

Map<Integer, String> inMap = new HashMap();
        inMap.put(100, "Test1");
        inMap.put(101, "Test2");
        inMap.put(102, "Test3");

Как мне применить String.valueOf () к Entry :: getKey?

    Map<String, String> collect = inMap.entrySet().stream().collect(Collectors.toMap(Entry::getKey, Entry::getValue));  //how to apply String.valueOf() on Entry::getKey

Это работает

    Map<String, String> map1 = inMap.entrySet().stream().collect(Collectors.toMap(entry -> String.valueOf(entry.getKey()), Map.Entry::getValue, (a, b) -> b)); //Working

почему String.valueOf (entry.getKey ()), entry.getValue () не работаетработать, хотя его бифункциональный?

    Map<String, String> map2 = inMap.entrySet().stream().collect(Collectors.toMap(entry -> String.valueOf(entry.getKey()), entry.getValue()));  //

Ответы [ 2 ]

3 голосов
/ 15 апреля 2019

Вы также можете использовать toString(), поскольку во всех классах-оболочках toString() переопределяется для возврата значения

 Map<String, String> collect = inMap.entrySet()
                                    .stream()
                                    .collect(Collectors.toMap(entry->entry.getKey().toString(), Entry::getValue));
3 голосов
/ 15 апреля 2019

Потому что entry.getValue() - это не Function, а entry -> entry.getValue().

Map<String, String> map = inMap.entrySet()
                               .stream()
                               .collect(Collectors.toMap(entry -> String.valueOf(entry.getKey()), entry -> entry.getValue()); // should work

Или вы можете просто использовать forEach как:

Map<String, String> outMap = new HashMap<>();
inMap.forEach((k, v) -> outMap.put(k.toString(), v));
...