我写了以下代码:
String reqParams = null;
Map<String, String[]> params = request.getParameterMap();
for (Object key : params.keySet()) {
String keyStr = (String) key;
String[] value = params.get(keyStr);
reqParams = reqParams + ((String) key + "=" + Arrays.toString(value) + " ");
}
System.out.println(reqParams);
我有以下输出:
nullorderId=[01] orderStatus=[delivered]
null
?答案 0 :(得分:2)
将reqParams
初始化为一个空字符串。就是
String reqParams = null;
成为
String reqParams = "";
答案 1 :(得分:2)
使用map
操作和joining
收集器:
String resultSet =
params.entrySet()
.stream()
.map(e -> e.getKey() + "=" + String.join(", ", e.getValue()))
.collect(Collectors.joining(" "));
", "
是定界符。" "
中的joining
是分隔元素的定界符
从源头上来。答案 2 :(得分:1)
像这样初始化reqParams:String reqParams = ""
或不要将字符串附加到redParams上,只需执行reqParams = ((String) key + "=" + value[0] + " ");
只获取数组中的元素,而不是将数组变成字符串:reqParams = reqParams + ((String) key + "=" + value[0] + " ");
您可以流params.keySet().stream().forEach(key -> .... )
并在forEach中添加一个函数,就像在for循环中一样,该函数会将键和值附加到String。
答案 3 :(得分:1)
您可以使用join
类的String
方法将数组变成字符串,避免使用[ ]
字符。另外,如果您将Map.Entry
与类型参数一起使用,并遍历条目集而不是键集,则不需要原始代码中的所有强制转换和多余的括号。
for( Map.Entry<String,String[]> entry : params.entrySet()) {
reqParams = reqParams + entry.getKey() + "=" + String.join(",", entry.getValue()) + " ";
}
因此,join
在这里获取您的数组,并用逗号分隔所有元素。
最后,如果将reqParams
初始化为""
而不是null
,则不会显示单词null
。
String reqParams = "";