链接ArrayLists并将数据保存到文件

时间:2015-07-27 00:29:49

标签: java arraylist

我正在为学校项目开发一个Java应用程序,我们必须输入用户信息:名称,学生ID及其分数。如何在ArrayList(或数组或任何类型)上存储每个用户的所有数据,以便我可以跟踪所有数据。

示例:

John Doe - 401712 - 20分

杰克杨 - 664611 - 30分

我希望能够调用setPoints之类的方法来更改学生选择的点值。

问题在于:如何将ArrayList链接在一起。如果我有三个ArrayLists,Java如何知道什么名称,学生ID和点相关联?

所有ArrayLists都存储在一个名为Data的类中。

数据数据=新数据();

此外,Data类中的所有ArrayLists都应输出到下次打开应用程序时加载的文件。

我会尝试回答任何问题。

3 个答案:

答案 0 :(得分:2)

您需要创建一个名为Student的类,然后声明Student类型的数组/ ArrayList。您的Student类必须有一个构造函数,用于设置Student类实例的字段(创建的实例现在称为对象)。

首先在你的另一个类所在的同一个包中创建一个Student类(你的main方法所在的类):

public class Student {

    private String firstName;
    private String lastName;
    private String studentId;
    private int points;

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

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public int getPoints() {
        return points;
    }

    public void setPoints(int points) {
        this.points = points;
    }        
}

然后在您的main方法或您喜欢的任何地方,创建一个Hashmap来保存您的Student对象。 map / hashmap就像一个ArrayList一样,用于存放一组对象。在您的用例中,最好使用散列映射,因为在使用散列映射时,查找/检索特定的学生对象会更快更容易。

import java.util.HashMap;
import java.util.Map;

public class Main {

    public static void main(String[] args) {
        // a map is a "key-value" store which helps you search items quickly 
        // (by only one lookup)
        // here you consider a unique value of each object as its 'key' in the map,
        // and you store the whole object as the value for that key.
        // that is why we defined Student as the second type in the following 
        // HashMap, it is the type of the "value" we are going to store
        // in each entry of this map. 
        Map<String, Student> students = new HashMap<String, Student>();

        Student john = new Student("John", "Doe", "401712", 20);
        Student jack = new Student("Jack", "Young", "664611", 30);

        students.put("401712", john);
        students.put("664611", jack);

        Student johnRetrieved = students.get("401712"); 
        // each hashmap has a get() method that retrieves the object with this 
        // specific "key". 
        // The following line retrieves the student object with the key "664611".
        Student jackRetrieved = students.get("664611");

        // set/overwrite the points "field" of this specific student "object" to 40
        johnRetrieved.setPoints(40);     
        int johnsPoints = johnRetrieved.getPoints(); 
        // the value of johnsPoints "local variable" should now be 40

    }
}

答案 1 :(得分:2)

您需要定义一个包含 3数据字段的类,如下所示

  
      
  1. 名称
  2.   
  3. 学生证
  4.   
  5. 他们的观点
  6.   

但不要忘记,该课程必须具有类的其他必要元素:

  
      
  1. 构造函数
  2.   
  3. 如果有必要,重载的构造函数
  4.   
  5. 访问者
  6.   
  7. 存取器
  8.   

注意:对于访问 arrayList中对象的每个部分,您可以使用访问者。对于操作 arrayList中对象的每个部分,您可以使用mustators。

有了这样的类之后,你可以定义一个arrayList,它包含你已经定义的类类型的元素

喜欢:

List<Your Type of class > students = new ArrayList<Your Type of class>;

Java 7之后,您可以

List<Your Type of class > students = new ArrayList<>;

这是钻石推断。

如果您要在arrayList中查找特定的ID号,可以执行以下操作:

public boolean findIdNumber(int idNumber){
    for(int i=0; i< students.size; i++)
          if(students.get(i).getID() == idNumber)
               return true;
          else
               return false;
} 

警告

  

我所做的是建议你能够找到你想要的更顺畅的东西。您需要进行必要的更改才能符合您的要求   要求做

答案 2 :(得分:0)

经典的面向对象方法是创建一个Student类,包括名称,ID和点,并在单个ArrayList中存储Student对象列表。

class Student{
    private String id;
    private String name;
    private int points;

    public Student(String id, String, name, int points){
        this.id = id;
        this.name = name;
        this.points = points;
    }
}
..
ArrayList<Student> students = new ArrayList<Student>();

students.add(new Student(1, 'John Doe', 1000));

String id = students.get(0).id;