以下代码将ArrayList<String>
转换为char[]
并打印输出显示为[back, pack]
。在此,char[]
包括','
和' '
。有没有办法以另一种方式去除逗号和空格?
ArrayList<String> list = new ArrayList<String>();
list.add("back");
list.add("pack");
char[] chars = list.toString().toCharArray();
for (char i : chars){
System.out.print(i);
}
答案 0 :(得分:3)
您可以加入String
中的ArrayList<String>
,然后从结果中获取char[]
来完成此操作:
char[] chars = list.stream().collect(Collectors.joining()).toCharArray();
这里.stream.collect(Collectors.joining())
部分是将Strings
序列加入一个的Java 8 Stream方法。请参阅:Collectors.joining()
文档。
如果您希望结果中的部分之间有任何分隔符,请改用Collectors.joining(delimiter)
。
还有一个重载,它会在结果中添加前缀和后缀,例如,如果您想要[
和]
,请使用Collectors.joining("", "[", "]")
。
答案 1 :(得分:2)
toString
上的list
方法是添加逗号和空格的内容,它是String
的{{1}}代表。由于list
是list
的集合,您不需要在其上调用String
,只需遍历集合,将每个toString
转换为字符数组使用String
(我假设您可能希望将所有字符串的所有字符一起添加)。
答案 2 :(得分:2)
只需替换此行
即可char[] chars = list.toString().toCharArray();
以下两行
String str=list.toString().replaceAll(",", "");
char[] chars = str.substring(1, str.length()-1).replaceAll(" ", "").toCharArray();
答案 3 :(得分:1)
Java代码中charArray的字符串:
ArrayList<String> list = new ArrayList<String>();
ArrayList<Character> chars = new ArrayList<Character>();
list.add( "back" );
list.add( "pack" );
for ( String string : list )
{
for ( char c : string.toCharArray() )
{
chars.add( c );
}
}
System.out.println( chars );
答案 4 :(得分:0)
只是一个例子,你应该如何解决大型列表到数组副本。当心字符数必须小于Integer.MAX。这段代码只是一个如何完成的例子。有很多检查必须实现它才能使代码正常工作。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class WrappedList {
//Or replace with some better counter
int totalCharCount = 0;
final List<String> list;
public WrappedList() {
this(new ArrayList<String>());
}
public WrappedList(final List<String> list) {
this.list = list;
}
public void add(final String toAdd) {
if(toAdd != null) {
totalCharCount += toAdd.length();
this.list.add(toAdd);
}
}
public List<String> getList() {
return Collections.unmodifiableList(list);
}
public char[] toCharArray() {
return this.toCharArray(this.totalCharCount);
}
public char[] toCharArray(final int charCountToCopy) {
final char[] product = new char[charCountToCopy];
int buffered = 0;
for (String string : list) {
char[] charArray = string.toCharArray();
System.arraycopy(charArray, 0, product, buffered, charArray.length);
buffered += charArray.length;
}
return product;
}
//Utility method could be used also as stand-alone class
public char[] toCharArray(final List<String> all) {
int size = all.size();
char[][] cpy = new char[size][];
for (int i = 0; i < all.size(); i++) {
cpy[i] = all.get(i).toCharArray();
}
int total = 0;
for (char[] cs : cpy) {
total += cs.length;
}
return this.toCharArray(total);
}
public static void main(String[] args) {
//Add String iteratively
WrappedList wrappedList = new WrappedList();
wrappedList.add("back");
wrappedList.add("pack");
wrappedList.add("back1");
wrappedList.add("pack1");
final char[] charArray = wrappedList.toCharArray();
System.out.println("Your char array:");
for (char c : charArray) {
System.out.println(c);
}
//Utility method one time for all, should by used in stand-alone Utility class
System.out.println("As util method");
System.out.println(wrappedList.toCharArray(wrappedList.getList()));
}
}