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