如何在Java中将ArrayList<Character>
转换为String
?
toString
方法将其返回为[a,b,c]
字符串 - 我想摆脱括号并将其存储为abc
。
答案 0 :(得分:28)
您可以遍历列表并创建字符串。
String getStringRepresentation(ArrayList<Character> list)
{
StringBuilder builder = new StringBuilder(list.size());
for(Character ch: list)
{
builder.append(ch);
}
return builder.toString();
}
另外,toString()
返回ArrayList内容的人类可读格式。不值得花时间从中过滤掉不必要的字符。它的实现明天可能会改变,你将不得不重写你的过滤代码。
答案 1 :(得分:17)
这是一个使用Java8流的可能的单行解决方案。
a)String字符串对象列表:
String str = chars.stream().map(e->e.toString()).reduce((acc, e) -> acc + e).get();
b)字符数组(char [] chars)
String str = Stream.of(chars).map(e->new String(e)).reduce((acc, e) -> acc + e).get();
更新 (以下评论):
a)String字符串对象列表:
String str = chars.stream().map(e->e.toString()).collect(Collectors.joining());
b)字符数组(char [] chars)
String str = Stream.of(chars).map(e->new String(e)).collect(Collectors.joining());
答案 2 :(得分:3)
你可以使用toString()和RegExp来做,而不需要任何循环和流:
List<Character> list = Arrays.asList('a', 'b', 'c');
String s = list.toString().replaceAll("[,\\s\\[\\]]", "");
答案 3 :(得分:1)
最简单的就是循环使用。
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);
答案 4 :(得分:1)
假设您有以下列表:
final ArrayList<Character> charsList = new ArrayList<Character>();
charsList.add('h');
charsList.add('e');
charsList.add('l');
charsList.add('l');
charsList.add('o');
这会产生 hello
(我正在使用org.apache.commons.lang.ArrayUtils
辅助类):
final Character[] charactersArray =
charsList.toArray(new Character[charsList.size()]);
final char[] charsArray = ArrayUtils.toPrimitive(charactersArray);
System.out.println(String.valueOf(charsArray));
答案 5 :(得分:1)
如何,建立清单
List<Character> charsList = new ArrayList<Character>();
charsList.add('h');
charsList.add('e');
charsList.add('l');
charsList.add('l');
charsList.add('o');
从字符列表中获取字符串的实际代码:
String word= new String();
for(char c:charsList){
word= word+ c;
}
System.out.println(word);
还在学习是否有错误点。
答案 6 :(得分:0)
提供多种解决方案。你可以迭代字符并附加到StringBuilder,然后在完成追加时,在StringBuilder上调用.toString。
或者使用apache commons-lang项目中的commons-lang StringUtils.join。
答案 7 :(得分:0)
我会说:
public String arayListToString(ArrayList arrayList){
StringBuffer b = new StringBuffer();
for(String s : arrayList){
b.append(s);
b.append(",");
}
return b.toString();
}
答案 8 :(得分:0)
使用join
类的Joiner
:
// create character list and initialize
List<Character> arr = Arrays.asList('a', 'b', 'c');
String str = Joiner.on("").join(arr);
System.out.println(str);
使用toString
,然后删除, and spaces
import com.google.common.base.Joiner;
....
<Character> arr = Arrays.asList('h', 'e', 'l', 'l', 'o');
// remove [] and spaces
String str = arr.toString()
.substring(1, 3 * str.size() - 1) //3 bcs of commas ,
.replaceAll(", ", "");
System.out.println(str);
或使用流:
import java.util.stream.Collectors;
...
// using collect and joining() method
String str = arr.stream().map(String::valueOf).collect(Collectors.joining());
答案 9 :(得分:0)
@waggledans的答案的一个很小补充
a)字符串对象的字符对象列表:
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());
答案 10 :(得分:-1)
private void countChar() throws IOException {
HashMap hashMap = new HashMap();
List list = new ArrayList();
list = "aammit".chars().mapToObj(r -> (char) r).collect(Collectors.toList());
list.stream().forEach(e -> {
hashMap.computeIfPresent(e, (K, V) -> (int) V + 1);
hashMap.computeIfAbsent(e, (V) -> 1);
});
System.out.println(hashMap);
}