我正在为学校项目开发一个Java应用程序,我们必须输入用户信息:名称,学生ID及其分数。如何在ArrayList(或数组或任何类型)上存储每个用户的所有数据,以便我可以跟踪所有数据。
示例:
John Doe - 401712 - 20分
杰克杨 - 664611 - 30分我希望能够调用setPoints之类的方法来更改学生选择的点值。
问题在于:如何将ArrayList链接在一起。如果我有三个ArrayLists,Java如何知道什么名称,学生ID和点相关联?
所有ArrayLists都存储在一个名为Data的类中。
数据数据=新数据();
此外,Data类中的所有ArrayLists都应输出到下次打开应用程序时加载的文件。
我会尝试回答任何问题。
答案 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数据字段的类,如下所示
- 名称
- 学生证
- 他们的观点
醇>
但不要忘记,该课程必须具有类的其他必要元素:
- 构造函数
- 如果有必要,重载的构造函数
- 访问者
- 存取器
醇>
注意:对于访问 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;