将字符串转换为java中的arraylist
如何将不带分隔符的String转换为ArrayList
。
我的字符串是这样的:
String str = "abcd..."
我知道一种方法是首先将String转换为char[]
,然后将char []
转换为ArrayList
。
有没有更好的方法来做到这一点? 喜欢直接转换? 考虑时间和性能,因为我正在使用大型数据库进行编码。
你需要像这样添加它。
String str = "abcd..."; ArrayList chars = new ArrayList (); for (char c : str.toCharArray()) { chars.add(c); }
使用lambda表达式来做到这一点。
String big_data = "big-data"; ArrayList chars = new ArrayList<>( big_data.chars() .mapToObj(e -> (char) e) .collect( Collectors.toList() ) );
如果您在创建后不需要修改列表,可能更好的方法是将字符串包装到实现List
接口的类中,如下所示:
import java.util.AbstractList; import java.util.List; public class StringCharacterList extends AbstractList { private final String string; public StringCharacterList (String string) { this.string = string; } @Override public Character get (int index) { return Character.valueOf (string.charAt (index)); } @Override public int size () { return string.length (); } }
然后像这样使用这个类:
List l = new StringCharacterList ("Hello, World!"); System.out.println (l);
很抱歉Retrobump,但现在这很容易!
您可以使用Streams在Java 8中轻松完成此操作! 尝试这个:
String string = "testingString"; List list = string.chars().mapToObj((i) -> Character.valueOf((char)i)).collect(Collectors.toList()); System.out.println(list);
您需要使用mapToObj
因为chars()
返回一个IntStream
。
public static void main(String[] args) { // TODO Auto-generated method stub String str = "abcd..."; ArrayList a=new ArrayList (); for(int i=0;i
你可以这样做:
import java.util.ArrayList; public class YourClass{ public static void main(String [] args){ ArrayList char = new ArrayList (); String str = "abcd..."; for (int x = 0; x < str.length(); x ++){ char.add(str.charAt(x)); } } }
有单行番石榴解决方案:
Lists.charactersOf("hello");
你可以将生成的ImmutableList
传递给ArrayList
构造函数,但是我可以问你为什么需要确切的ArrayList?