java迭代地图,除了最后一次迭代

ovo*_*vod 4 java iteration

我有下一个地图:

{title=varchar(50), text=text}
Run Code Online (Sandbox Code Playgroud)

我试图将它转换为两个字符串,如下所示:

StringBuffer string = new StringBuffer();
for (String keyinside: values.keySet()) {
    string.append(keyinside + " " + values.get(keyinside) + ", ");
}
Run Code Online (Sandbox Code Playgroud)

但是我想要的是 - 在最后一次迭代中没有包含",".我该怎么做?

Thi*_*ler 7

短java 8替代:

String result = values.entrySet().stream().map(e -> e.getKey() + " " + e.getValue())
                         .collect(Collectors.joining(", "))
Run Code Online (Sandbox Code Playgroud)

Stream.map() 将地图中的所有条目转换为条目的字符串描述.

请注意,Java 8最终还添加了该功能String.join().


Era*_*ran 1

使用一些指标:

StringBuffer string = new StringBuffer();
boolean first = true;
for (String keyinside: values.keySet()) {
    if (!first)
        string.append (", ");
    else
        first = false;
    string.append(keyinside + " " + values.get(keyinside));
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,使用 StringBuilder 更有效(假设您不需要线程安全)。