Java 如何检查列表中的元素是否为最后一个?

Java 如何检查列表中的元素是否为最后一个?,java,list,arraylist,Java,List,Arraylist,我试着做一些类似的事情: {"semaforo":"icbc"},{"semaforo":"pepito"} 我有以下代码: for (Iterator it = semaforosMiddleware.iterator(); it.hasNext();) { KeyMapMediciones semaforoMiddleware = (KeyMapMediciones) it.next(); jsonFamilias.append("{\"semaforo\":\"" + s

我试着做一些类似的事情:

{"semaforo":"icbc"},{"semaforo":"pepito"}
我有以下代码:

for (Iterator it = semaforosMiddleware.iterator(); it.hasNext();) {
    KeyMapMediciones semaforoMiddleware = (KeyMapMediciones) it.next();
    jsonFamilias.append("{\"semaforo\":\"" + semaforoMiddleware.getAplicacion() + "\"}");
    if (it.hasNext()) {
        jsonFamilias.append(",");
    }
}
但我得到的输出如下:

{"semaforo":"icbc"},{"semaforo":"pepito"},

我不希望在最后一个元素后面有最后一个逗号(“,”)。我能做什么?

您可以检查第一个元素(即在每个元素前添加逗号,第一个元素除外):


你发布的代码运行良好。下面是一个简化的可运行示例:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


public class Test {
    public static void main(String... args){

        List<String> list = new ArrayList<>();
        list.add("one");
        list.add("two");
        list.add("three");

        StringBuilder sb = new StringBuilder();

        for (Iterator<String> it = list.iterator(); it.hasNext();) {
            String element = it.next();
            sb.append(element);
            if(it.hasNext()){
                sb.append(", ");
            }
        }

        System.out.println(sb.toString()); //prints: one, two, three

    }
}
import java.util.ArrayList;
导入java.util.Iterator;
导入java.util.List;
公开课考试{
公共静态void main(字符串…参数){
列表=新的ArrayList();
列表。添加(“一”);
列表。添加(“两个”);
列表。添加(“三”);
StringBuilder sb=新的StringBuilder();
for(Iterator it=list.Iterator();it.hasNext();){
String元素=it.next();
某人附加(元素);
if(it.hasNext()){
某人加上(“,”);
}
}
System.out.println(sb.toString());//打印:一、二、三
}
}

或者,您也可以执行以下操作:

String jsonFamilias = semaforosMiddleware.stream()
                        .map(s -> "{\"semaforo\":\"" + s.getAplicacion() + "\"}")
                        .collect(Collectors.joining(","));

我在这个网站上学到的最好最简单的技巧是:

String separator = "";
for (String s : coll) {
   buf.append(separator).append(s);
   separator = ",";
}

Joiner的使用使这些场景更容易处理。

下面是一个Java 8解决方案

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("one");
    list.add("two");
    list.add("three");

    String toString = list.stream().collect(Collectors.joining(", "));
    System.out.println("toString = " + toString);
}

看看Java8+中可能存在的问题。人们应该使用它。这段代码太干净了,实际上它不仅仅是干净的代码,人们还有一些其他严重的问题,比如支持以前版本的应用程序。哈哈,我喜欢它。愚蠢而优雅。
StringBuilder stringBuilder = new StringBuilder("");
stringBuilder.append(Joiner.on(", ").join(semaforosMiddleware));
String resultString = stringBuilder.toString();
public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("one");
    list.add("two");
    list.add("three");

    String toString = list.stream().collect(Collectors.joining(", "));
    System.out.println("toString = " + toString);
}
toString = one, two, three