2012-07-02 34 views
0

我對Java編程相對比較陌生,目前我正嘗試在Java中實現鏈接列表。我有一個叫做學生的課。其中有以下成員 - 名稱,MarksObtained。現在,我想將各種學生對象逐個添加到鏈接列表中。將以前添加的對象的成員打印到鏈接列表中

My_query1:同樣,遍歷列表時,我只想打印 成員 - MarksObtained。

My_query2:迭代器界面的方法, itr.next()返回_ __ _ __ _ __ _

My_query3:如果我創建 具有相同名稱的班級學生的對象迭代和 同時將其添加到鏈接列表,它是有效的嗎?

public static void main(String []args){ 
    LinkedList al = new LinkedList(); 
    for(int i=0; i<100; i++){ 
      student s = new student(); 
      s.MarksObtained = i; 
      s.Name = "blah"; 
      al.add(s); 
    } 
} 

感謝。

+1

添加到LinkedList的對象的名稱並不重要,每次循環迭代時使用'new'運算符創建對象意味着您每次都創建一個不同的Student對象。 –

+0

@Jones請接受相應的答案:) – damned

回答

1

My_query1:同樣,在遍歷列表我只想打印成員 - MarksObtained。

您可以使用以下代碼來遍歷列表,該代碼利用列表的可枚舉性。

for (student item : al) { 
    System.out.println(item.MarkObtained) 
} 

My_query2:迭代器界面的方法,itr.next()返回_ ___

itr.next()根據你如何將它們添加到列表(或排序後,排序後的順序),返回列表的下一個項目。下面的代碼是通過列表迭代

Iterator<student> itr = al.listIterator(0); 
while (itr.hasNext()) { 
    student item = itr.next(); 
    System.out.println(item.MarkObtained); 
} 

My_query3的另一種方法:如果我創建類學生的對象具有相同的名稱和迭代同時把它添加到鏈表,它是有效的?

是的這是有效的,只要你每次「新」。如果你沒有新增他們,但改變他們的成員值,所有已經添加到列表中的項目也將更改值,因爲他們的對象引用是相同的(所以你最終會列出你最後添加的項目的全部列表 - 所有一樣)。

+0

好的。所以,基本上對象的內容被複制到鏈接列表成員,現在再次訪問它們的唯一方法是遍歷列表。對? – Jones

+0

是的,鏈表不可索引,每個元素只有一個指向下一個元素的指針。您可以使用其他數據結構(如ArrayList)直接對項目[ar.get(index)]或HashMap或TreeMap進行索引,以便通過其他標識符(例如其名稱[map.get(studentname)])進行索引。但是如果你使用的是鏈表,你必須遍歷它來提取它的元素。 – blitzen

+0

好的。非常感謝。 – Jones

0

My_query1:同樣,在遍歷目錄

我只想打印成員 - MarksObtained。

for(int i=0; i<100; i++){ 
      student s = new student(); 
      s.MarksObtained = i; 
      s.Name = "blah"; 
      al.add(s); 
      System.out.println(s.MarksObtained) 

} 

My_query2:迭代器界面的方法,itr.next()返回_ ___

在迭代返回迭代

如果我創建類學生的對象具有相同的名稱和迭代同時把它添加到鏈表下的下一個對象,它是有效的?

是的,它是有效的

+0

不,我的意思是,我想通過使用迭代器接口單獨遍歷鏈表時打印MarksObtained。可能? – Jones

0

是在列表中您可以添加重複項。

List<Student> al =new LinkedList<Student>(); 

    for(int i=0; i<100; i++){ 
      Student s = new Student(); 
      s.marks=i; 
      s.name="ABC"; 
    } 

    Iterator<Student> it=al.iterator(); 
    while (it.hasNext()) { 

     Student st=it.next(); 
     System.out.println(st.name+" , "+st.marks); 

    } 

你的答案

My_query1: Again, while traversing the list i want to print only the member - MarksObtained. 

是的,你可以使用iterator如上。

My_query2: The iterator interface method, itr.next() returns __________ ? 

它在Iterator

My_query3: If i create objects of the class student with the same name iteratively and simultaneously add it to the linked list, is it valid? 

是的,它是有效的返回一個對象。

+0

非常感謝:) – Jones

相關問題