Java 将字符的ArrayList转换为字符串?
如何在Java中将Java 将字符的ArrayList转换为字符串?,java,string,collections,Java,String,Collections,如何在Java中将ArrayList转换为String? toString方法将其返回为[a,b,c]字符串-我想去掉括号并将其存储为abc最简单的方法是循环 List<String> strings = new ArrayList<String>(); // populate strings StringBuilder builder = new StringBuilder(); for(String string : strings) { builder
ArrayList
转换为String
?
toString
方法将其返回为[a,b,c]
字符串-我想去掉括号并将其存储为abc最简单的方法是循环
List<String> strings = new ArrayList<String>();
// populate strings
StringBuilder builder = new StringBuilder();
for(String string : strings) {
builder.append(string).append(',');
}
if(builder.length() > 0) {
builder.deleteCharAt(builder.length() - 1);
}
System.out.println(builder);
List strings=new ArrayList();
//填充字符串
StringBuilder=新的StringBuilder();
for(字符串:字符串){
append(string.append(',');
}
如果(builder.length()>0){
builder.deleteCharAt(builder.length()-1);
}
System.out.println(生成器);
您可以遍历列表并创建字符串
String getStringRepresentation(ArrayList<Character> list)
{
StringBuilder builder = new StringBuilder(list.size());
for(Character ch: list)
{
builder.append(ch);
}
return builder.toString();
}
String getStringRepresentation(ArrayList列表)
{
StringBuilder=新的StringBuilder(list.size());
for(字符ch:list)
{
附加(ch);
}
返回builder.toString();
}
另外,toString()
返回ArrayList内容的可读格式。不值得花时间从中过滤掉不必要的字符。它的实现明天可能会改变,您将不得不重写过滤代码。许多可用的解决方案。您可以迭代字符并附加到StringBuilder,然后在完成附加后,在StringBuilder上调用.toString
或者使用apache commons lang项目中的commons lang StringUtils.join之类的东西。假设您有以下列表:
final ArrayList<Character> charsList = new ArrayList<Character>();
charsList.add('h');
charsList.add('e');
charsList.add('l');
charsList.add('l');
charsList.add('o');
我想说:
public String arayListToString(ArrayList arrayList){
StringBuffer b = new StringBuffer();
for(String s : arrayList){
b.append(s);
b.append(",");
}
return b.toString();
}
这个怎么样,建立列表
List<Character> charsList = new ArrayList<Character>();
charsList.add('h');
charsList.add('e');
charsList.add('l');
charsList.add('l');
charsList.add('o');
仍在学习是否有错误指出。这里有一个可能的使用Java8 streams的单线解决方案
a) 要字符串的字符对象列表:
String str = chars.stream().map(e->e.toString()).reduce((acc, e) -> acc + e).get();
String str = chars.stream().map(e->e.toString()).collect(Collectors.joining());
b) 字符数组(字符[]个字符)
更新(以下评论):
a) 要字符串的字符对象列表:
String str = chars.stream().map(e->e.toString()).reduce((acc, e) -> acc + e).get();
String str = chars.stream().map(e->e.toString()).collect(Collectors.joining());
b) 字符数组(字符[]个字符)
您可以使用toString()和RegExp执行此操作,而无需任何循环和流:
List List=Arrays.asList('a','b','c');
字符串s=list.toString().replaceAll(“[,\\s\\[\\]]”,“”)代码>使用加入者的加入
类:
// create character list and initialize
List<Character> arr = Arrays.asList('a', 'b', 'c');
String str = Joiner.on("").join(arr);
System.out.println(str);
或使用流:
import java.util.stream.Collectors;
...
// using collect and joining() method
String str = arr.stream().map(String::valueOf).collect(Collectors.joining());
对@waggledans答案的一个小小补充
a)要字符串的字符对象列表:
String word= new String();
for(char c:charsList){
word= word+ c;
}
System.out.println(word);
String str = chars.stream().map(e->e.toString()).collect(Collectors.joining());
哪个e->e.toString()
可以被Object::toString
String str = chars.stream().map(Object::toString).collect(Collectors.joining());
虽然从问题中的例子来看,他们不需要逗号,所以你可以通过去掉逗号和删除最后一行来简化问题。@James-是的,我没有注意到!逗号(即,
)如何?您可能希望通过新建StringBuilder(list.size())来确保容量代码>这样就不会出现不必要的realloc,但这是一种优化使用StringBuilder和than-toString方法而不是简单地使用String类的优点是什么?最简单的解决方案是使用正则表达式。当标准库满足要求时,为什么要使用第三方库?是否有一种标准方法可以做与之相同的事情ArrayUtils#toPrimitive
?我知道这个问题可以用不同的方法来解决,我问的是我选择的避免显式循环的具体方法。此外,我无法想象现在在类路径上没有commons lang
。这是一个糟糕的主意。创造力值得奖励:)这不是问题的答案在我的情况下,我必须键入String str=(String)(chars.stream().map(e->e.toString()).collect(collector.joining());没错,但是使用StringBuilder比字符串扭曲更有效
import java.util.stream.Collectors;
...
// using collect and joining() method
String str = arr.stream().map(String::valueOf).collect(Collectors.joining());
String str = chars.stream().map(e->e.toString()).collect(Collectors.joining());
String str = chars.stream().map(Object::toString).collect(Collectors.joining());