Jin*_*won 12 java query-parameters java-8 java-stream
我有一个Map<String, List<Object>>.
如何将其转换为Stream,Entry<String, Object>以便构建连接查询String?
q1 a, b
q2 c, d
Run Code Online (Sandbox Code Playgroud)
成
q1=a&q1=b&q2=c&q2=d
Run Code Online (Sandbox Code Playgroud)
我现在正在这样做.
if (params != null && !params.isEmpty()) {
final boolean[] flag = new boolean[1];
params.forEach((n, vs) -> {
vs.forEach(v -> {
builder.append(flag[0] ? '&' : '?')
.append(n)
.append('=')
.append(v);
if (!flag[0]) {
flag[0] = true;
}
});
});
}
Run Code Online (Sandbox Code Playgroud)
Era*_*ran 11
好吧,你不必生产Entry<String, Object>.您可以使用flatMap获取key = value Strings并String使用Collectors.joining以下命令直接构造查询:
String query =
map.entrySet()
.stream()
.flatMap(e -> e.getValue().stream().map(v -> e.getKey() + '=' + v))
.collect(Collectors.joining("&"));
Run Code Online (Sandbox Code Playgroud)
输入:
{q1=[a, b], q2=[c, d]}
Run Code Online (Sandbox Code Playgroud)
输出:
q1=a&q1=b&q2=c&q2=d
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
492 次 |
| 最近记录: |