2017-07-18 118 views
-2
a = [1,3,5,7,9,3] 
b = [2,1,7,9,5,1] 

a[5] & b[5]是重複的a[1] & b[1]。有什麼辦法從兩個數組中刪除所有重複的對嗎?任何幫助都會很棒。如何從Java中的兩個數組中刪除重複對?

+6

你能告訴我們你的嘗試嗎? –

+0

歡迎來到Stack Overflow!請參考[遊覽](http://stackoverflow.com/tour),環顧四周,閱讀[幫助中心](http://stackoverflow.com/help),特別是[我該如何問一個好問題?](http://stackoverflow.com/help/how-to-ask)和[我可以問什麼問題?](http://stackoverflow.com/help/on-topic)。從第二個環節來看:「提出作業幫助的問題必須包括您迄今爲止解決問題所做的工作的總結,並描述您解決問題的難度。」 –

+0

我不知道該怎麼做...... :( –

回答

0

有沒有簡單的方法來做到這一點:

  • 創建Set(不重複)對(從a一個值,從b一個值)
  • 設定的值添加到陣列

public static void main(String[] args) { 
     int[] a = new int[]{1, 3, 5, 7, 9, 3}; 
     int[] b = new int[]{2, 1, 7, 9, 5, 1}; 

     Set<Pair<Integer, Integer>> set = new LinkedHashSet<>(); 
     for (int i = 0; i < b.length; i++) { 
      set.add(new Pair<>(a[i], b[i])); 
     } 

     a = new int[set.size()]; 
     b = new int[set.size()]; 
     int i = 0; 

     for (Pair<Integer, Integer> pair : set) { 
      a[i] = pair.getKey(); 
      b[i] = pair.getValue(); 
      i++; 
     } 
} 
0

這可能是可優化的,但這工作正常。 這隻會刪除重複,並保留原件。

Integer[] a = {1,3,5,7,9,3}; 
Integer[] b = {2,1,7,9,5,1}; 

ArrayList<Integer> al = new ArrayList<Integer>(); 
al.addAll(Arrays.asList(a)); 

ArrayList<Integer> bl = new ArrayList<Integer>(); 
bl.addAll(Arrays.asList(b)); 

HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(); 
int i = 0; 

while(i < al.size() -1){  
    map.put(al.get(i),bl.get(i));  
    i++;     
} 

int y = map.size(); 
Integer[] af = map.keySet().toArray(new Integer[y]); 
Integer[] bf = map.values().toArray(new Integer[y]); 

System.out.println((Arrays.asList(af)).toString()); 
//Output : [1, 3, 5, 7, 9] 
System.out.println((Arrays.asList(bf)).toString()); 
//Output : [2, 1, 7, 9, 5] 
+0

我認爲這個想法是刪除_pairs_重複,考慮到每個「pair」是來自'a'的一個元素和來自'b'的一個元素。您的解決方案分別從每個數組中刪除重複的元素,這似乎不是OP想要的。另外,解決方案1不保留順序。 – Grodriguez

+0

oooh我明白了,我會更新我的答案。 – Asew

相關問題