【发布时间】:2014-04-03 18:31:18
【问题描述】:
我需要在 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 中对其进行测试。 尝试传递 comp 时出现此错误:变量 comp 可能尚未初始化
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 类中是否缺少某些内容。
【问题讨论】:
-
你可以阅读我关于这个的文章(应该很快更新)codeproject.com/Articles/703185/…
-
您还没有定义“最小”的含义。您在代码中暗示您的意思是“最短”,但我怀疑定义有点复杂,如“最短但在出现平局时,根据字符排序顺序排序(即按字母顺序排列字母)”。一旦你知道了,就实现
Comparator<String>。
标签: java string initialization comparator