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