按名字升序排列报错

按名字升序排列报错

http://img1.sycdn.imooc.com//climg/5cb6709f00018f6210360879.jpg

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 11:07:05

同学你好,第二个参数应该为Comparator的实现类,同学检查一下NameComparator类是否实现了Comparator接口。如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 Li_fei #1
    有实现: package com.imooc.sort; import java.util.Comparator; import com.imooc.set.Cat; 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; } }
    2019-04-19 21:30:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师