目標是循環遍歷0到n個數字集合,並找出所有已通過集合的數字。我知道如何查找共同的集合,如果我將該方法硬編碼爲接受特定數量的Comparable []。但讓我們說我想將三個Comparable []存儲到一個Object []中,並將Object []作爲參數傳遞給一個方法。我怎樣才能從對象[]中「展開」三個Comparable [],以便我可以對它們進行操作?Java:如何循環訪問Java中的n個數組?數組作爲一個對象數組傳遞
這裏是一個工作的硬編碼的方法:
public static Comparable[] compare2(Comparable[] test1, Comparable[] test2,
Comparable[] test3) {
Comparable[] inCommon = new Comparable[25];
int counter = 0;
int comparisons = 0;
for (Comparable c : test1) {
for (Comparable d : test2) {
comparisons++;
if (c.compareTo(d) == 0) {
for (Comparable e : test3) {
comparisons++;
if (d.compareTo(e) == 0) {
inCommon[counter] = c;
counter++;
break;
}
}
}
}
}
System.out.println(comparisons);
return inCommon;
它返回顯示在通用於所有三組數字的可比性[],我已經寫了打印方法之後。即使當我將Object []傳遞給我的比較方法而不是特定數量的Comparable []時,我也希望能夠做到這一點。在我的主文件中,我可以通過N組數字創建0,我希望我的比較方法能夠找到常用數字,而不管有多少組傳遞給它。我試圖寫一個遞歸函數。這並沒有奏效,因爲當我嘗試使用櫃檯來保留我的位置時,它很快就變得非常混亂。我還嘗試編寫第二種方法,該方法一次只比較兩個集合,但沒有奏效。我們的目標是讓我的方法是這樣工作的:
Comparable[] test1 = {1, 2, 3};
Comparable[] test2 = {2, 3, 4};
Comparable[] test3 = {2, 3, 5};
Object[] sets = {test1, test2, test3};
public static Comparable[] compare3(Object[] sets){
// I need to unravel the Object[] and then process however many
// Comparable[] are inside the Object[]
}
遞歸方法將解決您的問題。 – Hector 2014-12-11 05:20:39
有關如何開始遞歸方法的任何提示?我試圖編寫一種方法,每次都會調用自己並從集合[counter + 1]開始,但我不知道這是否正確。 – HandleThatError 2014-12-11 05:22:39
你的意思是你想發送可比數組的數組而不是固定數組的數量? – Panther 2014-12-11 05:36:53