例如,我有一个对象的数组列表。它是一个具有以下属性的学生对象
public Student(String name, String address)
{
if (name == null)
name = "";
if (address == null)
address = "";
this.name = name;
this.address = address;
lastAssignedNumber++;//Starts at 1000
studentNum = lastAssignedNumber;
// at first no credits have been taken (so no grade points either)
totalCredits = 0;
totalPoints = 0.0;}
假设我在这个数组列表中添加了多个对象。我想根据studentNum在数组列表中编辑一个对象。
让我们调用arraylist mylist:
我知道mylist.get(studentNum)不会工作,因为它得到了列表的索引。有没有办法在studentNum上编辑某个对象?
发布于 2014-01-29 18:13:27
与您的需求最匹配的是使用具有任何具体实现的Map接口。
那么键值对将是Id作为Long,Student object作为value。
Map<Long,Student> students= new HashMap<Long,Student>();然后,您可以将其用作
students.put(stu.getId(), student);获取
Student st= students.get(stu.getId());否则你每次都会迭代
发布于 2014-01-29 18:13:37
假设我在找一个studentNum为32的学生
for(Student s : mylist) {
if(32 == s.getStudentNum) {
theStudent = s;
}
}这是假设上面的数据结构,如果你想创建一个以studentNum为键,以学生对象为值的映射,这会更合适。
发布于 2014-01-29 18:14:23
您可以使用Map:
Map<Integer, Student> students = new HashMap<>();放入学生和id:
students.put(studentNum, student);并通过id获取学生:
students.get(studentNum);https://stackoverflow.com/questions/21427866
复制相似问题