按名字升序排列报错
来源:3-3 案例:对宠物猫按名字进行排序
Li_fei
2019-04-17 08:18:27
sort处提示:
The method sort(List<T>, Comparator<? super T>) in the type Collections is not applicable for the arguments (List<Cat>, NameComparator)
2回答
你好!你的代码在我这里是可以运行正确的,调试后的所有代码如下。建议同学下次贴代码时也像我一样,把代码忒到回答里,不截图,这样方便我们快速为你解答。
Cat类:
package com.imooc.sort; public class Cat { private String name; private int age; private String specis; public Cat(){} public Cat(String name, int age, String specis) { super(); this.name = name; this.age = age; this.specis = specis; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSpecis() { return specis; } public void setSpecis(String specis) { this.specis = specis; } @Override public String toString() { return "Cat [name=" + name + ", age=" + age + ", specis=" + specis + "]"; } }
NameComparator类:
package com.imooc.sort; import java.util.Comparator; public class NameComparator implements Comparator<Cat> { @Override public int compare(Cat arg0, Cat arg1) { // 按宠物猫名字进行升序排列 // 如果降序排列:arg1.getName().compareTo(arg0.getName()); String name1=arg0.getName(); String name2=arg1.getName(); int n= name1.compareTo(name2); return n; } }
NameTest类:
package com.imooc.sort; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class NameTest { public static void main(String[] args) { Cat huahua=new Cat("huahua",3,"英国短毛猫"); Cat fanfan=new Cat("fanfan",5,"中华田园猫"); Cat maomao=new Cat("maomao",1,"中华田园猫"); List<Cat> catList=new ArrayList<Cat>(); catList.add(huahua); catList.add(fanfan); catList.add(maomao); System.out.println("按名字升序排序前:"); for(Cat cat:catList){ System.out.println(cat); } Collections.sort(catList,new NameComparator()); System.out.println("按名字升序排序后:"); for(Cat cat:catList){ System.out.println(cat); } } }
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
吃吃吃鱼的猫
2019-04-17
同学你好,第二个参数应该为Comparator的实现类,同学检查一下NameComparator类是否实现了Comparator接口。如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
相似问题