Java 将字符串转换为arraylist<;性格>;在爪哇
如何将不带分隔符的字符串转换为Java 将字符串转换为arraylist<;性格>;在爪哇,java,string,list,arraylist,converter,Java,String,List,Arraylist,Converter,如何将不带分隔符的字符串转换为ArrayList 我的字符串是这样的: String str = "abcd..." import java.util.AbstractList; import java.util.List; public class StringCharacterList extends AbstractList <Character> { private final String string; public StringCharacterL
ArrayList
我的字符串是这样的:
String str = "abcd..."
import java.util.AbstractList;
import java.util.List;
public class StringCharacterList extends AbstractList <Character>
{
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 <Character> l = new StringCharacterList ("Hello, World!");
System.out.println (l);
import java.util.ArrayList;
public class YourClass{
public static void main(String [] args){
ArrayList<Character> char = new ArrayList<Character>();
String str = "abcd...";
for (int x = 0; x < str.length(); x ++){
char.add(str.charAt(x));
}
}
}
我知道一种方法是首先将字符串转换为char[]
,然后将char[]
转换为ArrayList
有没有更好的办法?比如直接转换?考虑到时间和性能,因为我正在使用一个大数据库进行编码。如果在创建列表后不需要修改列表,可能更好的方法是将字符串包装到类中,实现如下界面:
String str = "abcd..."
import java.util.AbstractList;
import java.util.List;
public class StringCharacterList extends AbstractList <Character>
{
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 <Character> l = new StringCharacterList ("Hello, World!");
System.out.println (l);
import java.util.ArrayList;
public class YourClass{
public static void main(String [] args){
ArrayList<Character> char = new ArrayList<Character>();
String str = "abcd...";
for (int x = 0; x < str.length(); x ++){
char.add(str.charAt(x));
}
}
}
import java.util.AbstractList;
导入java.util.List;
公共类StringCharacterList扩展了AbstractList
{
私有最终字符串;
public StringCharacterList(字符串)
{
this.string=string;
}
@凌驾
公共字符get(int索引)
{
返回Character.valueOf(string.charAt(index));
}
@凌驾
公共整数大小()
{
返回string.length();
}
}
然后像这样使用这个类:
String str = "abcd..."
import java.util.AbstractList;
import java.util.List;
public class StringCharacterList extends AbstractList <Character>
{
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 <Character> l = new StringCharacterList ("Hello, World!");
System.out.println (l);
import java.util.ArrayList;
public class YourClass{
public static void main(String [] args){
ArrayList<Character> char = new ArrayList<Character>();
String str = "abcd...";
for (int x = 0; x < str.length(); x ++){
char.add(str.charAt(x));
}
}
}
List l=newstringcharacterlist(“你好,世界!”);
System.out.println(l);
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
字符串str=“abcd…”;
ArrayList a=新的ArrayList();
对于(inti=0;i您需要这样添加它
String str = "abcd...";
ArrayList<Character> chars = new ArrayList<Character>();
for (char c : str.toCharArray()) {
chars.add(c);
}
String str=“abcd…”;
ArrayList chars=新的ArrayList();
for(字符c:str.toCharArray()){
添加(c)项;
}
您可以这样做:
String str = "abcd..."
import java.util.AbstractList;
import java.util.List;
public class StringCharacterList extends AbstractList <Character>
{
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 <Character> l = new StringCharacterList ("Hello, World!");
System.out.println (l);
import java.util.ArrayList;
public class YourClass{
public static void main(String [] args){
ArrayList<Character> char = new ArrayList<Character>();
String str = "abcd...";
for (int x = 0; x < str.length(); x ++){
char.add(str.charAt(x));
}
}
}
import java.util.ArrayList;
公共课你的课{
公共静态void main(字符串[]args){
ArrayList char=新的ArrayList();
字符串str=“abcd…”;
对于(int x=0;x
很抱歉,这很简单
您可以在Java 8中使用Streams轻松完成此操作!请尝试以下方法:
String string = "testingString";
List<Character> list = string.chars().mapToObj((i) -> Character.valueOf((char)i)).collect(Collectors.toList());
System.out.println(list);
String String=“testingString”;
List List=string.chars().mapToObj((i)->Character.valueOf((char)i)).collect(Collectors.toList());
系统输出打印项次(列表);
您需要使用mapToObj
,因为chars()
返回一个IntStream
使用lambda表达式来执行此操作
String big_data = "big-data";
ArrayList<Character> chars
= new ArrayList<>(
big_data.chars()
.mapToObj(e -> (char) e)
.collect(
Collectors.toList()
)
);
String big_data=“大数据”;
阵列列表字符
=新阵列列表(
big_data.chars()
.mapToObj(e->(char)e)
.收集(
收集者
)
);
字符串myString=“xxx”;
ArrayList myArrayList=myString.chars().mapToObj(x->(char)x).collect(toCollection(ArrayList::new));
myArrayList.forEach(System.out::println);
那么…你想把隐式字符串转换成某种类型的集合吗?如果是这样,你尝试过什么?一些示例代码会很有用。你真的想转换成ArrayList
还是只想把字符串包装成List
以原始字符串为背景?@Makoto我已经尝试过了“cha”r[]chars=str.tocharray();ArrayList mylist=new ArrayList();for(char c:chars)mylist.add(c);“@MikhailVladimirov我真的想把它转换成ArrayList@squiguy正如我在下面提到的,您的代码似乎不起作用。很好。我认为它不起作用。str.toCharArray()将返回char[],而您正在将其分配给类型为Character的ArrayList。更准确地说,您无法将基元数组转换为这样的ArrayList。这样应该可以:),但正如我所提到的,您首先将字符串转换为字符数组,然后逐个添加以获得ArrayList。我考虑的是空间和时间成本,而字符串非常大,数据库中的字符串数量也非常多。@aga_pan Hmm,除非您冒险进入一些第三方库,否则我不确定是否存在w是的。至少我不知道!@aga_pan最后,我相信虚拟机会优化编译字节码的循环效率。找到答案的唯一方法是选择一些方法并使用它。谢谢,但我需要的是ArrayList:)错误:(13114)java:不兼容类型:推理变量R具有不兼容的边界等式约束:java.util.List上界:java.util.ArrayList,java.lang.Object