字符串和地图比较

时间:2017-02-16 09:25:59

标签: java collections

如何将字符串中的每个字母与地图的键进行比较? 如果每个字母都作为地图的键存在,请将其更改为大写字母。

String str = "abcdef";
Map<String, String> map = new HashMap<String, String>();
map.put("a", "A");
map.put("b", "B");
map.put("c", "C");
map.put("d", "D");
map.put("e", "E");

结果应为"ABCDEf"。 如果字符串中的字母在地图中不存在,则该字母将保留在原位。

1 个答案:

答案 0 :(得分:6)

你可以做到

String after = Stream.of(str.split(""))  // a stream of a String for each letter
                     .map(c-> map.getOrDefault(c, c)) // look up replacement or leave
                     .collect(Collectors.joining("")); //join into string with no separator
  

如何使用String#toCharArray()和String.ValueOf(char [] data)

您可以使用循环代替。

char[] chars = str.toCharArray();
for (int i = 0; i < chars.length;i ++)
    chars[i] = map.getOrDefault(""+chars[i], ""+chars[i]).charAt(0);
String after = new String(chars);