Java 将列表打印为字符串时删除最后一个逗号或其他分隔符
假设我有一个Java 将列表打印为字符串时删除最后一个逗号或其他分隔符,java,string,Java,String,假设我有一个数据结构,其中包含n元素(0,1,…,n-1) 假设这些元素有我想要打印的属性(假设是int)。我想用分隔符(逗号,空格)将数据结构打印在一行上。所以,结果是这样的 13,14,15,16,17 添加逗号和空格的最佳方法是什么(在Java中) 以下是我采取的方法: 如果datastructure是Iterable,则从0迭代到n-2,并将分隔符附加到其中每个元素,然后打印最后一个元素 循环遍历所有元素并将所有内容附加到空的String(或Stringbuilder),然后在最后移除最
数据结构
,其中包含n
元素(0,1,…,n-1)
假设这些元素有我想要打印的属性(假设是int
)。我想用分隔符(逗号
,空格
)将数据结构打印在一行上。所以,结果是这样的
13,14,15,16,17
添加逗号和空格的最佳方法是什么(在Java中)
以下是我采取的方法:
如果datastructure
是Iterable
,则从0迭代到n-2
,并将分隔符附加到其中每个元素,然后打印最后一个元素
循环遍历所有元素并将所有内容附加到空的String
(或Stringbuilder
),然后在最后移除最后一个清除器(hardcoded
)
我觉得有更好的
编辑:这个问题是独一无二的。“可能的重复”只涉及打印,而不涉及分隔符
Edit2:根据请求进行尝试
// 1st approach
public void printStuff(ArrayList<Integer> input) {
for (int i=0; i<input.size()-1; i++) {
System.out.print(input.get(i) + ", ");
}
System.out.println(input.get(input.size()-1);
}
//第一种方法
public void printStuff(ArrayList输入){
对于(int i=0;i您可以使用一个框架,如下所示:
List<MyClass> list = ...;
String concatination = list.stream()
.map(p -> String.valueOf(p.getProperty()))
.collect(Collectors.joining(", "));
Joiner.on(“,”).join(list)使用迭代器,我会检查是否还有剩余项。
如果是,请添加分隔符:
if (i.hasNext()) s.append(", ");
Java8的流式API最终提供了一种优雅的、本机的方式来实现这一点,而无需求助于丑陋的if-else结构或使用第三方
假设您有一个MyClass
对象列表,并且假设MyClass
有一个返回int
的getPropery()
访问方法,您可以执行以下操作:
List<MyClass> list = ...;
String concatination = list.stream()
.map(p -> String.valueOf(p.getProperty()))
.collect(Collectors.joining(", "));
List=。。。;
字符串concatation=list.stream()
.map(p->String.valueOf(p.getProperty()))
.collect(收集器。连接(“,”);
使用一些Java 8流魔法:
List<Integer> list = Arrays.asList(1, 2, 3) //just so we have a list to work on
String result = list.stream()
.map(it -> it.toString())
.collect(Collectors.joining(", "))
List List=Arrays.asList(1,2,3)//这样我们就有了一个要处理的列表
字符串结果=list.stream()
.map(it->it.toString())
.collect(收集器.连接(“,”))
您可以删除第一个元素,将其添加到字符串中,然后添加,
:
List<String> lst = new ArrayList<String>();
// add elements
StringBuilder buffer = new StringBuilder();
buffer.append(lst.remove(0));
for(String s : lst) {
buffer.append(", ").append(s);
}
List lst=new ArrayList();
//添加元素
StringBuilder缓冲区=新的StringBuilder();
buffer.append(lst.remove(0));
用于(字符串s:lst){
buffer.append(“,”).append(s);
}
请为您的尝试发布代码。如果您的列表元素是自定义对象,您也可以通过覆盖对象#toString
或Java 8来更改它们的表示形式。它的可能重复令人惊讶,在Java中必须处理的问题非常琐碎……回答得非常好。谢谢!您有我可以访问的特定在线资源吗阅读更多关于这方面的内容?@jiaweizhang相当不错。这和我在尝试2中做的一样,虽然是向后的,但它确实处理了硬编码的结尾。