2012-06-14 21 views
3

我有一個ArrayList,其中包含一系列整數(represnting在另一個ArrayList中的索引)。從Java中的ArrayList獲取唯一的元素對

我需要提取每個獨特的對如...

ArrayList = 1,4,5,7 

我需要:

1:4 
1:5 
1:7 
4:5 
4:7 
5:7 

什麼是實現這一目標的最簡單的方法?

+0

@SimplyPanda不是很多 - 這顯然非常簡單。我可以通過在檢查時將東西推到數組上來解決它,但它看起來像是過度殺傷。這是用於一個非常簡單的物理引擎中的其他人的代碼。我們已經減少了特定網格中的對象,並且需要有效地選擇對來測試碰撞。由於這看起來應該是一個班輪,我希望有人能給我一個快速的答案 – Basic

+0

您是否在尋找一個易於實施或高效?該陣列有多少個iters? – ssedano

+0

@ssedano潛在的幾千 – Basic

回答

6

轉換列表Set和回List獨特的過濾

for(int i = 0 ; i < list.size(); i ++){ 
    for(int j = i+1 ; j < list.size(); j ++){ 
    System.out.println(list.get(i) + "," + .list.get(j))  
    } 
} 
+0

謝謝 - 看起來很完美 – Basic

+0

不客氣:) –

0

經過第一要素所有可能的選擇井環。對於其中的每一個,循環通過所有可能的選擇。

我會將找到的重複部分留給您(提示:使用Set)。

0

您可以有兩個索引:一個用於第一部分,另一個用於第二部分。然後以第一種形式開始,直到最後一個元素,然後在內部循環中循環遍歷第一個,從第一個到第一個到最後。

+0

這會生成不唯一的配對。 –

+0

@SeanOwen - 爲什麼這樣?第二個總是從第一個之後開始,所以沒有一對會遇到多次 - 見Jigar的答案,它基本上是相同的 – Attila

+0

因爲原始列表可能有重複的值 - 但是,OP只是澄清它不會。如果是的話,這就好了。 –

0

我不知道使用單向關係的圖結構是否適合這個問題。

這是比簡單的排列方式更多的工作,但可能更有趣的實施。特別爲大量的雙。

+0

我不會在這樣一個簡單的問題上拋出一個數據庫 – Attila

相關問題