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

时间:2015-08-04 12:50:37

标签: java list arraylist

我尝试做类似的事情:

{"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"},

我不想在最后一个元素之后输入最后一个逗号(",")。我该怎么办?

6 个答案:

答案 0 :(得分:13)

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

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

答案 1 :(得分:3)

在下面找到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);
}

<强>输出

toString = one, two, three

答案 2 :(得分:2)

您发布的代码运行正常。这是一个简化的可运行示例:

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

    }
}

答案 3 :(得分:1)

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

boolean first = true;
for (Iterator it = semaforosMiddleware.iterator(); it.hasNext();) {
    if(!first){
        jsonFamilias.append(",");
    } else {
        first = false;
    }
    KeyMapMediciones semaforoMiddleware = (KeyMapMediciones) it.next();
    jsonFamilias.append("{\"semaforo\":\"" + semaforoMiddleware.getAplicacion() + "\"}");
}

答案 4 :(得分:0)

或者,您也可以这样做:

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

答案 5 :(得分:0)

StringBuilder stringBuilder = new StringBuilder("");
stringBuilder.append(Joiner.on(", ").join(semaforosMiddleware));
String resultString = stringBuilder.toString();

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