我需要在一個類MinTester,使用比較對象從ArrayList集合計算「最小的」串 寫一個靜態方法:如何正確初始化比較器?
public static String min(ArrayList<String> list, Comparator<String> comp)
我不能使用Collections類來計算最低。
這是我到目前爲止。
public class MinTester
{
public static String min(ArrayList<String> list, Comparator<String> comp)
{
String shortest = list.get(0);
for(String str : list) {
if (comp.compare(str, shortest) < 0) {
shortest = str;
}
}
return shortest;
}
}
我沒有從方法中得到任何錯誤,所以我嘗試在Main中測試它。 我試圖通過補償時出現此錯誤:變量補償可能沒有被初始化
public static void main(String[] args)
{
// TODO code application logic here
MinTester s = new MinTester();
Comparator<String> comp;
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("ab");
list.add("abc");
list.add("abcd");
String a = s.min(list,comp);//Error: Variable comp may not have been initialized
System.out.println(a);
}
繼承人在那裏我遇到了我的問題。
我嘗試
Comparator<String> comp = new Comparator<>();//Error:Comparator is abstract, cannot be instantiated
Comparator<String> comp = new MinTester();//Error: MinTester cannot be converted to Comparator<String>
誰能告訴我來處理這個比較正確的方法是什麼?林不知道如果我只是試圖不正確地初始化它,或者如果我在我的MinTester類缺少的東西。
你可以閱讀我關於這方面的文章(應該儘快更新)http://www.codeproject.com/Articles/703185/Comparator-and-Comparable-objects –
你還沒有定義你所說的「最小」 。在代碼中暗示你的意思是「最短」,但是我懷疑這個定義比較複雜一點,就像「最短但是如果出現平局,根據字符排序順序排序(即按字母順序排列)」。一旦你知道了,執行'Comparator''。 –