Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符的ArrayList转换为字符串?_Java_String_Collections - Fatal编程技术网

Java 将字符的ArrayList转换为字符串?

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

如何在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.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());