我目前在从哈希映射中的值中提取单个字符串时遇到一些麻烦。

当前,我有一个哈希映射,其设置如下:

Map<Character, Character> keyMapping = new HashMap<Character, Character>();
       for(int i = 0; i < rotor1.length(); i++) {
           keyMapping.put(thirdKeyMapping.get(rotor1.charAt(i)), rotor2.charAt(i));
       }


当您打印keyMapping时,它将呈现一个数组,如下所示:

println(keyMapping.values().toString());
//[F, S, Y, Q, N, I, D, X, B, E, H, Z, C, T, J, O, W, M, V, A, L, K, U, P, R, G]


如何更改此打印行,以使该值是仅包含字母的单个字符串?例如:

//FSYQNIDXBEHZCTJOWMVALKUPRG


希望这一点很清楚,但是请告诉我是否有更多信息可以帮助您回答这个问题。

最佳答案

如果您使用的是Java 8,则可以使用reduction完成您要执行的操作,其中String标识为空字符串""

请注意,由于您有Character的集合,因此必须有一个中间步骤才能将它们首先转换为String

String reduced = keyMapping.values()
                           .stream()
                           .map(Object::toString)
                           .reduce("", String::concat);


然后,您可以打印出reduced,它将是您期望的字符串。

09-27 12:41