2014-01-29 120 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)); 
相關問題