2014-01-29 122 views
0

例如,我有一个对象的数组列表。正是有了这些属性对象ArrayList属性

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; 

}

说我已经加入了多个对象装配到这一ArrayList学生对象。我想根据studentNum编辑arraylist中的一个对象。

让调用数组列表MYLIST:

我知道mylist.get(studentNum)不会工作,因为它得到列表的索引。有没有办法在studentNum上编辑某个对象?

+0

您可以用'Map'确实发现'studentId' vs'Student'? – sanbhat

+0

我觉得我不够具体。所以我找到studentNum在arraylist然后基于studentNum我wana编辑该对象,以便totalcredit得到改变(我想我知道如何做到这一点,但我无法找到阵列中的对象) – Shimy

回答

0

您需求的最佳匹配是对任何具体实现使用Map接口。

然后键值对将为IdLongStudent对象为value

Map<Long,Student> students= new HashMap<Long,Student>(); 

然后你可以使用它作为

students.put(stu.getId(), student); 

越来越

Student st= students.get(stu.getId()); 

否则你结束了迭代,每次

+1

@sanbhat啊..谢谢。这是一个错误。 –

0

说我一直在寻找一个学生与32

for(Student s : mylist) { 
    if(32 == s.getStudentNum) { 
    theStudent = s; 
    } 
} 

这studentNum是假设上述数据结构,如果你想创建一个studentNum地图为重点,学生为对象的价值,那会是多少比较合适。

0

您可以使用地图:

Map<Integer, Student> students = new HashMap<>(); 

放学生和ID:

students.put(studentNum, student); 

,并通过ID获得学生:

students.get(studentNum); 
0

如果您Student对象覆盖equals考虑studentNumber场,那么你可以通过例如做发现

首先得到Student创建一个示例

Student example = new Student(); 
s.setStudentNum(32); //If you want to find student with id 32 

则可以通过例如

Student toFind = arrayList.get(arrayList.indexOf(example)); 
相关问题