[英]How to convert ArrayList of Strings to char array
以下代碼將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);
}
您可以通過在ArrayList<String>
加入String
,然后從結果中獲取char[]
來實現:
char[] chars = list.stream().collect(Collectors.joining()).toCharArray();
這里的.stream.collect(Collectors.joining())
部分是Java 8 Stream方法,用於將一串Strings
合並為一個。 請參閱: Collectors.joining()
文檔。
如果要在結果中各部分之間使用任何定界符,請改用Collectors.joining(delimiter)
。
還有一個重載,它會在結果中添加前綴和后綴,例如,如果要在結果中添加[
和]
,請使用Collectors.joining("", "[", "]")
。
只需替換此行
char[] chars = list.toString().toCharArray();
以下兩行
String str=list.toString().replaceAll(",", "");
char[] chars = str.substring(1, str.length()-1).replaceAll(" ", "").toCharArray();
list
上的toString
方法是添加逗號和空格的方法,它是list
的String
表示形式。 由於list
是String
的集合,因此您無需在其上調用toString
,只需遍歷該集合即可使用toCharArray
將每個String
轉換為chars數組(我假設您可能會希望添加所有Strings的所有chars一起)。
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 );
只是一個示例,您應如何解析大列表到數組副本。 注意字符數必須小於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()));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.