2012-03-19 87 views
0


我想這個問題已經在這裏提出。我搜索了但找不到類似的東西。所以這裏去 -
我有一個自定義的數據對象MethodMethod如下 -Java LinkedList - 檢索對象的索引

public Class Method { 
List<String> inputParameters; 
String resultVariableName; 
} 

現在我有一個LinkedList<Method>充當Method對象的存儲庫。

給定一個Method對象有沒有一種方法可以具體確定對象的正確索引。
我的問題是從LinkedList類有一個indexOf程序,但該對象的第一次出現這個例程返回,但隨後就沒有考慮到Method對象的2個副本不能駐留在LinkedList(右?)
將臉標記每Method對象,因爲我將它添加到LinkedList解決我的目的,如果是的話是否有一個理想的方法來做到這一點?編號:
解釋我的使用案例更進一步。
我的代碼基本上讀取Velocity模板自上而下創建Method對象。一個Method對象被創建用於遇到的每個速度例程。 這解釋了爲什麼同一元素可以存儲在LinkedList中的多個索引處,因爲調用例程的時間數或提供給例程的輸入/結果沒有實際限制。

現在,我通過使用用戶可以點擊並編輯Method對象具有在LinkedList<Method>的UI組件,一個JButtonMethod對象引用。

因此,我需要知道確切Method對象引用的事件編輯相同的元素存在兩次或LinkedList<Method>

+0

我不確定我是否理解你的權利。您想將對象(列表中的對象)的索引保存在對象中?現在,如果你再添加一次?在對象中有索引列表,或阻止第二次添加操作?也許你正在尋找一個Set,每個對象只能添加一次。 – 2012-03-19 06:28:19

+0

將兩個相同的對象添加到列表中的目的是什麼? – 2012-03-19 06:32:23

+0

@All編輯進一步解釋我的用例。 – ping 2012-03-19 06:44:59

回答

2

更多次數的你是什麼擺在首位的「正確」的指數是指?如果鏈表可以包含相同的元素兩次或更多(在這裏要小心 - 該列表將只包含一個參考到一個Method對象,而不是對象本身),那麼哪個索引在視圖中是「正確的」?

當然你也可以自己只是遍歷鏈表並返回在一個給定的Method引用發生的所有指標,但目前還不清楚你想用它做什麼。

請注意,索引並不經常與鏈接列表一起使用,因爲獲取元素給定的索引是O(n)操作。

+0

謝謝!具有很大的意義。 – ping 2012-07-09 11:04:59

+0

喬恩的答案總是有意義的......如果他們沒有道理,那麼「感覺」就是錯的,而不是喬恩。無論如何,如果你只想要一個給定Method的單個實例,但是order/index很重要,你應該使用LinkedHashMap,如果你想要多個實例並且order/index對你的鏈表重要。 – 2015-07-31 17:25:50

0

LinkedList不會避免重複,它可能有多個副本。

您可以放置​​一個邏輯來避免多個實例,擴展鏈表類並覆蓋add函數來檢查Method對象是否已經存在。

OR

如果你想獲得的Method對象的所有實例,您可以使用的ListIterator,並收集它的所有實例,並返回這個集合的結果。

0

「沒有給出Method對象的2個副本不能駐留在LinkedList」,如果這是一個場景,你將如何識別檢索哪個對象?

在這種情況下,我建議您使用LinkedHashMap,您可以使用標識符作爲唯一標識Method's對象的關鍵字。