Java 需要一种使用RandomAccessFile从ArrayList存储写入学生的方法吗

Java 需要一种使用RandomAccessFile从ArrayList存储写入学生的方法吗,java,arraylist,random-access,Java,Arraylist,Random Access,嘿,我有个问题。我想使用arrayList创建一个studentStore(我已经完成了),但是当我尝试使用RandomAccessFile编写学生时,我就不知所措了 StudentStore details = new StudentStore(); Student a = new Student("Becky O'Brien", "DKIT26", "0876126944", "bexo@hotmail.com"); Student b = new Student("Fabio Borini

嘿,我有个问题。我想使用arrayList创建一个studentStore(我已经完成了),但是当我尝试使用RandomAccessFile编写学生时,我就不知所措了

StudentStore details = new StudentStore();
Student a = new Student("Becky O'Brien", "DKIT26", "0876126944", "bexo@hotmail.com");
Student b = new Student("Fabio Borini", "DKIT28", "0876136944", "fabioborini@gmail.com");
Student c = new Student("Gaston Ramirez", "DKIT29", "0419834501", "gramirez@webmail.com");
Student d = new Student("Luis Suarez", "DKIT7", "0868989878", "luissuarez@yahoo.com");
Student e = new Student("Andy Carroll", "DKIT9", "0853456788", "carroll123@hotmail.com");
这些是我的学生

现在我需要一种方法把它们写下来

RandomAccessFile raf = new RandomAccessFile("employee.dat", "rw");
Student er = new Student(null, null, null, null);
for (int i = 0; i < details.length; i++) //This is getting an error obviously because details wont be taken.  nor will a, b,c , d or e which is what the student was declared at the top.
{
    er.setFirstName([i]);
    er.setLastName(lnames[i]);
    er.setAddress(addresses[i]);
    er.setAge(ages[i]);
    er.setSalary(salaries[i]);
    er.write(raf);
}
raf = new RandomAccessFile("employee.dat", "rw");

er = new Student();

int numRecords = (int) raf.length() / er.size();

for (int i = 0; i < numRecords; i++) {
    er.read(raf);

    System.out.print(er.getStudentName() + " ");
    System.out.print(er.getStudentId() + " ");
    System.out.print(er.getStudentEmail() + " ");
    System.out.print(er.getStudentTelephoneNumber() + " ");
}
raf.seek(0);
for (int i = 0; i < numRecords; i++) {
    er.read(raf);
    if (er.getAge() >= 55) {
        er.setSalary(0.0);
        raf.seek(raf.getFilePointer() - er.size());
        er.write(raf);
        raf.seek(raf.getFilePointer() - er.size());
        er.read(raf);
    }
    System.out.print(er.getStudentName() + " ");
    System.out.print(er.getStudentId() + " ");
    System.out.print(er.getStudentEmail() + " ");
    System.out.print(er.getStudentTelephoneNumber() + " ");
}
RandomAccessFile raf=新的RandomAccessFile(“employee.dat”、“rw”);
学生er=新学生(空,空,空,空);
for(int i=0;i=55){
er.setSalary(0.0);
seek(raf.getFilePointer()-er.size());
呃,write(英国皇家空军),;
seek(raf.getFilePointer()-er.size());
雷德(英国皇家空军);
}
System.out.print(er.getStudentName()+);
System.out.print(er.getStudentId()+);
System.out.print(er.getStudentEmail()+);
System.out.print(er.getStudentTelephoneNumber()+);
}

为您的
学生商店尝试此操作
,以获取内部
数组列表的大小

public class StudentStore
{
    ArrayList<Student> students = null;

    public StudentStore()
    {
        students = new ArrayList<Student>();
    }

    public int size()
    {
        return (students == null) ? 0 : students.size();
    }
}
公共类学生商店
{
ArrayList students=null;
公共学生商店()
{
学生=新数组列表();
}
公共整数大小()
{
返回值(students==null)?0:students.size();
}
}

但是,我不明白,为什么您必须创建自己的包装
ArrayList
,而不是使用简单的
ArrayList

问题是什么?请指定。表达式的类型必须是数组类型,但已解析为Student。这就是错误。@BharatSinha问题是我不知道如何让学生使用RandomAccessFile打印出来。我整个上午都在谷歌上搜索,但我还不知道怎么做。你说你想使用
ArrayList
。什么是
StudentStore
?StudentStore是声明ArrayList的地方,我在这里存储编辑ArrayList的方法。你想看看吗?我只是习惯用这种方式创建存储。我做了这件事,它要求我在学生而不是学生商店中创建这个方法。PNDO88OK,如果你认为我有帮助的话,考虑接受我的答案。否则,创建您自己的答案并接受这个.er.setStudentName(a[i]);我怎样才能让这部分工作。a反对学生a=新生(“贝基·奥布莱恩”、“DKIT26”、“0876126944”bexo@hotmail.com");所以
er
学生
a
也是
学生
?如果是,则不能使用
a[i]