我需要在一个类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''。 –