[英]Find largest element in a generic array method, Integer, String, Character
我有一種方法可以很好地找到通用數組中的最小元素。 但是,當我嘗試相同的方法但略有不同時,每次運行它都會返回0。我不知道為什么。
我希望解決該問題的方法看起來與下面的方法差不多。 我不想導入Generic.max或使用集合,我想以一種更原始的方式進行處理,如下所示。
如何使用類似於下面的方法來找到最大值? 當我嘗試將<0更改為> 0時,它不起作用。 如何使這種min方法成為max方法?
public static <E extends Comparable<E> > int getSmallesElement(E[] list) {
int minIndex = 0;
// Iterate from i+1 ti i-1
for (int index = minIndex + 1; index <= list.length - 1; index++) {
minIndex = (list[index].compareTo(list[minIndex]) < 0 )? index : minIndex;
}// end for
return minIndex;
}// end getSmallest method
就像我說的,如果我可以像我的第一種方法那樣使用條件,那將很好。 我是泛型的新手,我正在嘗試使這些方法適用於Integer,String和Character數組。
謝謝。
您將條件表達式重寫為if
語句,但未正確執行它:您希望使用maxIndex = index
而不是index = maxIndex
。
除了可以在if
兩個分支的每次迭代中分配maxIndex
,您可以僅在“ true”分支中分配它,然后完全刪除“ false”分支:
for(int index = maxIndex + 1; index <= list.length -1; index++) {
if (list[maxIndex].compareTo(list[index] ) < 0) {
maxIndex = index;
}
}
您將在循環過程中重置index
,而不僅僅是設置maxIndex
:
public static <E extends Comparable<E> > int getLargestElement(E[] list) {
int maxIndex = 0;
for(int index = 1; index <= list.length -1; index++) {
if (list[index].compareTo(list[maxIndex] ) > 0) {
maxIndex = index;
}
}
return maxIndex;
}
我發現了一些最終可行的方法。
public static <E extends Comparable<E> > E getLargestElement(E[] list) {
E max = list[0]; // set first value in array as current max
for(int i = 1; i < list.length; i++) {
if(list[i].compareTo(max) > 0 ) {
max = list[i];
}
}// end for
return max;
}
有人可以向我解釋為什么其他答案和我嘗試使用的方法總是返回0嗎? 對我來說,這聽起來不錯,您的所有答案也都一樣,但它們沒有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.