2012-01-06 35 views
0

任何人都可以幫助我。我正在做一個應用程序,並在Java中,數字發送到一個int數組,我需要檢查數組中的任何數字重複,如果有調用方法或類似的東西。有沒有一種方法來檢查這個或類似的東西?或者我將不得不使用循環,如果我已經嘗試過,但會變得有點長和混亂的語句。任何建議將是偉大的,謝謝。Android(檢查重複數字的陣列的方法?)

int test[] = {0,0,0,0,0,0,0}; (The Array) 

(A method to check if any of the arrays numbers are repeated) 

回答

3

您可以使用Collections.frequency()方法得到的 指望有多少次號碼你想要什麼repeated.Depending, 你可以遍歷整數數組,並檢查各多少次一個重複。 如果某個項目的頻率大於1,那麼它將在該陣列中重複。 您可以根據自己的需要改編下面的代碼。 注意:順便說一下System.out.println()給eclipse log cat部分的輸出。 它只是爲了演示。

ArrayList<Integer> nums = new ArrayList<Integer>(); 
     nums.add(new Integer(3)); 
     nums.add(new Integer(3)); 
     nums.add(new Integer(3)); 
     nums.add(new Integer(2)); 
     nums.add(new Integer(2)); 
     nums.add(new Integer(1)); 
     System.out.println("Number of 1's" + " " + Collections.frequency(nums, 1)); 
     System.out.println("Number of 2's" + " " + Collections.frequency(nums, 2)); 
     System.out.println("Number of 3's" + " " + Collections.frequency(nums, 3)); 
1

什麼是昱歐試圖模仿它是一個SET

不包含重複元素的集合。更正式地,集合不包含e1和e2這樣的元素對,使得e1.equals(e2)和至多一個空元素。正如其名稱所暗示的那樣,該界面模擬數學集抽象。

Set是一個接口,因此您可以使用HashSet或TreeSet來實現該接口。 因此,即使您嘗試添加相同的值,您也只有1個具有相同值的對象。

爲了確保您是否已經擁有該對象(在其他中激發您的事件/方法),您可以使用函數contains返回布爾檢查,如果該元素已經存在於該集合中。

+0

對不起,我是Android新手,我不確定這是什麼意思.. – 2012-01-06 19:27:27

+0

你能給我這個在一些示例代碼? – 2012-01-06 19:59:47

0

我會寫類似:

公共布爾hasRepeatedNumbers(INT []一個){ INT [] B =新INT [則爲a.length]; System.arraycopy(a,0,b,0,a.length); Array.sort(b); int i;對於(i = 1; i < b.length; i ++){if(b [i] == b [i-1])返回true; } return false; }

這是因爲我們對數組進行排序(實際上是數組的副本,因爲我們不想混淆調用者的原始數組),然後檢測相鄰的重複項。由於數組已排序,所有重複項必須相鄰。

如果數組很大並且複製它很昂貴,那麼可以在適當的位置進行操作(但要記錄此功能)。

如果你不能排序數組,你也可以建立一個集合,然後遍歷數組測試當前值是否在集合中 - 如果是,它是重複的。如果沒有,請將其放入設置中。

+0

該代碼無法正常工作..介意我是Android新手.. – 2012-01-06 19:32:40