Python 官方文档:入门教程 => 点击学习
目录使用Comparator比较接口实现排序Comparator接口定义如下我们定义一个“person”类创建按年龄排序的比较器实现Comparator接口使
Comparator是比较接口,当我们需要对某个类进行排序而此类本身没有时Comparable时,我们可以建立一个该类的比较器来实现Comparator接口即可实现排序。
public interface Comparator<T>{
int compara(T o1 ,T o2);
boolean equals(Object obj);
}
备注:若实现Comparator接口,必须实现compara(T o1,To2)函数,但可以不实现equals函数。
例子:
public class person {
private String name; //姓名
private int age; //年纪
//构造函数
public person(String get_name , int get_age) {
this.name = get_name;
this.age = get_age;
}
public int get_age() {
return this.age;
}
public String get_name() {
return this.name;
}
}
//创建根据年龄排序的比较器
public class compare_byAge implements Comparator<person> {
//重写compare方法
@Override
//此处为按年龄升序排序
public int compare(person o1, person o2) {
if(o1.get_age() > o2.get_age() ) {
return 1;
}
else if(o1.get_age() == o2.get_age()) {
return 0;
}
else {
return -1;
}
}
}
public class test {
public static void main(String[] args) {
//创建person对象
person p1 = new person("li",15);
person p2 = new person("ping",18);
person p3 = new person("liao",13);
person p4 = new person("long",23);
person p5 = new person("xu",12);
//创建peson类的ArrayList集合
ArrayList<person> per = new ArrayList<person>();
//将实例化的person对象加入到ArrayList集合中
per.add(p1);
per.add(p2);
per.add(p3);
per.add(p4);
per.add(p5);
//排序前的顺序(其实就是按照插入顺序)
System.out.println("排序前:");
for(int i =0;i<per.size();i++) {
System.out.println(per.get(i).get_age()+" "+per.get(i).get_name());
}
System.out.println();
//用Collection.sort()排序
Collections.sort(per,new compare_byAge());
System.out.println("排序后:");
for(int i =0;i<per.size();i++) {
System.out.println(per.get(i).get_age()+" "+per.get(i).get_name());
}
}
}
输出结果:
//设置以名字长度为判断标准的比较器
public class compare_bynameLen implements Comparator<person> {
public int compare(person o1, person o2) {
//按名字长度升序排序
if(o1.get_name().length() > o2.get_name().length()) {
return 1;
}
//名字长度相同的情况下按照年龄升序排序
else if( o1.get_name().length() == o2.get_name().length() ) {
if(o1.get_age() > o2.get_age() ) {
return 1;
}
else if(o1.get_age() == o2.get_age()) {
return 0;
}
else {
return -1;
}
}
else {
return -1;
}
}
}
运行结果为:
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
--结束END--
本文标题: 如何使用Comparator比较接口实现ArrayList集合排序
本文链接: https://lsjlt.com/news/175823.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0