Java 如何将字符串转换为用户定义的ArrayList

Java 如何将字符串转换为用户定义的ArrayList,java,arraylist,Java,Arraylist,我有一个逗号分隔的学生值字符串,需要添加到学生的ArrayList中。然而,我目前拥有的东西不起作用,我不知道如何继续 String s; BufferedReader in = new BufferedReader(new FileReader(path)); s = in.readLine(); ArrayList<Student> slist = new ArrayList<>(); while (s != null){ slist.add(s);

我有一个逗号分隔的学生值字符串,需要添加到学生的ArrayList中。然而,我目前拥有的东西不起作用,我不知道如何继续

String s;
BufferedReader in = new BufferedReader(new FileReader(path));
s = in.readLine();
ArrayList<Student> slist = new ArrayList<>();
while (s != null){
    slist.add(s);
    s = in.readLine();
}
字符串s;
BufferedReader in=新的BufferedReader(新文件读取器(路径));
s=in.readLine();
ArrayList slist=新的ArrayList();
while(s!=null){
列表。添加(s);
s=in.readLine();
}

slist.add(s)
不起作用,因为字符串s无法转换为ArrayList

鉴于您没有发布关于如何创建学生的代码,这将是我对如何解决问题的最佳猜测

String s;
BufferedReader in = new BufferedReader(new FileReader(path));
s = in.readLine();
ArrayList<Student> slist = new ArrayList<>();
while (s != null){
    slist.add(new Student(s)); //creat a new student based on the string
    s = in.readLine();
}
字符串s;
BufferedReader in=新的BufferedReader(新文件读取器(路径));
s=in.readLine();
ArrayList slist=新的ArrayList();
while(s!=null){
slist.add(新学生);//基于字符串创建新学生
s=in.readLine();
}

如果您有一个学生类的构造函数,该构造函数将字符串作为参数,那么这将起作用。就像每个人都说的那样,你正在创建一个学生数组列表,而不是字符串。如果要将Student对象添加到列表中,则必须创建它。

它不起作用,因为ArrayList接受Student类型的元素,但您正在尝试添加String类型的元素

假设您的学生类与您尝试添加的字符串(如学生姓名)相关:

class Student{
    private String name;
    public Student(String name){
        this.name = name;
    }
}
然后,您可以将其添加为:

while (s != null){
    slist.add(new Student(s));  //create student obj from s, then add to list
    s = in.readLine();
}

比如说:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

public class Main {

    private static class Student {
        private String firstName;
        private String lastName;

        public Student(String firstName, String lastName) {
            this.firstName = firstName;
            this.lastName = lastName;
        }

        public Student(String line) {
            String[] parts = line.split(",");
            if (parts.length > 0 && parts.length == 2) {
                this.firstName = parts[0];
                this.lastName = parts[1];
            }
        }

        public String getFirstName() {
            return firstName;
        }

        public Student setFirstName(String firstName) {
            this.firstName = firstName;
            return this;
        }

        public String getLastName() {
            return lastName;
        }

        public Student setLastName(String lastName) {
            this.lastName = lastName;
            return this;
        }

        @Override
        public String toString() {
            return this.firstName + " " + this.lastName;
        }
    }

    private static final String fileName = "fileName.txt";

    public static void main(String[] args) throws IOException {
        String s;
        BufferedReader in = new BufferedReader(new FileReader(fileName));
        s = in.readLine();
        ArrayList<Student> slist = new ArrayList<>();

        while (s != null) {
            slist.add(new Student(s));
            s = in.readLine();
        }

        slist.forEach(System.out::println);
    }
}
导入java.io.BufferedReader;
导入java.io.FileReader;
导入java.io.IOException;
导入java.util.ArrayList;
公共班机{
私立静态班学生{
私有字符串名;
私有字符串lastName;
公立学生(字符串名、字符串名){
this.firstName=firstName;
this.lastName=lastName;
}
公立学生(弦线){
String[]parts=line.split(“,”);
如果(parts.length>0&&parts.length==2){
this.firstName=零件[0];
this.lastName=零件[1];
}
}
公共字符串getFirstName(){
返回名字;
}
公立学生setFirstName(字符串firstName){
this.firstName=firstName;
归还这个;
}
公共字符串getLastName(){
返回姓氏;
}
公立学生setLastName(字符串lastName){
this.lastName=lastName;
归还这个;
}
@凌驾
公共字符串toString(){
返回this.firstName+“”+this.lastName;
}
}
私有静态最终字符串fileName=“fileName.txt”;
公共静态void main(字符串[]args)引发IOException{
字符串s;
BufferedReader in=新的BufferedReader(新文件读取器(文件名));
s=in.readLine();
ArrayList slist=新的ArrayList();
while(s!=null){
添加(新学生);
s=in.readLine();
}
slist.forEach(System.out::println);
}
}

您的
ArrayList
属于
Student
类型,您正在尝试向其中添加
String
类型数据。看到问题了吗?
s
不需要转换为
ArrayList
。它需要转换为
学生
。如果没有
Student
的代码,很难说怎么做。
add(s)
返回布尔类型。无法将其添加到
slist
,因为它属于
ArrayList
类型。仅当
ArrayList
的类型为
String
感谢您的帮助时,此功能才起作用。我明白我做错了什么。我真傻。谢谢