网站页面建设方案书模板wordpress模班之家
news/
2025/9/24 16:14:38/
文章来源:
网站页面建设方案书模板,wordpress模班之家,软件开发过程包括,seo优化关键词排名优化1. 字面含义不同
Comparable字面意思是“具有比较能力”#xff0c;Comparator字面意思是“比较器”。
2. 用法不同
Comparable用法#xff1a;对需要排序的类#xff0c;实现Comparable接口#xff0c;重写compareTo()方法。
Comparator用法#xff1a;创建自定义比较…1. 字面含义不同
Comparable字面意思是“具有比较能力”Comparator字面意思是“比较器”。
2. 用法不同
Comparable用法对需要排序的类实现Comparable接口重写compareTo()方法。
Comparator用法创建自定义比较器实现Comparator接口重写compare()方法。还通过匿名类的方式更快速便捷的完成自定义比较器的功能。
3. 使用场景不同
Comparable必须修改原有的类也就是说要排序哪个类就要在哪个类中实现Comparable接口并重写compareTo()方法。所以Comparable更像对内进行排序。
Comparator无需修改原有类也就是说通过Comparator接口可以实现和原有类的解耦在不修改原有类的情况下实现排序功能所以Comparator可以看做对外提供排序的接口。
4. 示例
4.1 没有实现任何接口
package test;import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.util.ArrayList;public class test1 {public static void main(String[] args) {//创建对象Person p1 new Person(1, 18, Java);Person p2 new Person(2, 22, MySQL);Person p3 new Person(3, 6, Redis);//添加到集合ArrayListPerson list new ArrayList();list.add(p1);list.add(p2);list.add(p3);//打印集合信息for (Person p : list) {System.out.println(p.getName() : p.getAge());}}
}Getter
Setter
ToString
class Person{private int id;private int age;private String name;public Person(int id, int age, String name) {this.id id;this.age age;this.name name;}
}运行结果
Java: 18
MySQL: 22
Redis: 6从运行结果看到没有进行任何排序操作
4.2 实现Comparable接口
package test2;import lombok.Getter;
import lombok.Setter;
import lombok.ToString;import java.util.ArrayList;
import java.util.Collections;public class test2 {public static void main(String[] args) {//创建对象Person p1 new Person(1, 18, Java);Person p2 new Person(2, 22, MySQL);Person p3 new Person(3, 6, Redis);//添加到集合ArrayListPerson list new ArrayList();list.add(p1);list.add(p2);list.add(p3);Collections.sort(list);//打印集合信息for (Person p : list) {System.out.println(p.getName() : p.getAge());}}
}Getter
Setter
ToString
class Person implements ComparablePerson {private int id;private int age;private String name;public Person(int id, int age, String name) {this.id id;this.age age;this.name name;}Overridepublic int compareTo(Person p) {//降序比较对象-当前对象return p.getAge() - this.getAge();//升序当前对象-比较对象//return this.getAge()-p.getAge();}
}运行结果
MySQL: 22
Java: 18
Redis: 64.3 实现Comparator接口
package test3;import lombok.Getter;
import lombok.Setter;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;public class test3 {public static void main(String[] args) {//创建对象Person p1 new Person(1, 18, Java);Person p2 new Person(2, 22, MySQL);Person p3 new Person(3, 6, Redis);//添加到集合ArrayListPerson list new ArrayList();list.add(p1);list.add(p2);list.add(p3);//进行排序操作(根据PersonComparator中定义的排序规则排序)Collections.sort(list,new PersonComparator());//打印集合信息for (Person p : list) {System.out.println(p.getName() : p.getAge());}}
}/*** 用于Person类的比较器*/
class PersonComparator implements ComparatorPerson {Overridepublic int compare(Person p1, Person p2) {//升序 比较对象1 - 比较对象2return p1.getAge()-p2.getAge();//降序 比较对象2 - 比较对象1//return p2.getAge()-p1.getAge();}
}Getter
Setter
class Person {private int id;private int age;private String name;public Person(int id, int age, String name) {this.id id;this.age age;this.name name;}
}运行结果
Redis: 6
Java: 18
MySQL: 224.4 使用Comparator匿名类
package test4;import lombok.Getter;
import lombok.Setter;import java.util.ArrayList;
import java.util.Comparator;public class test4 {public static void main(String[] args) {//创建对象Person p1 new Person(1, 18, Java);Person p2 new Person(2, 22, MySQL);Person p3 new Person(3, 6, Redis);//添加到集合ArrayListPerson list new ArrayList();list.add(p1);list.add(p2);list.add(p3);//使用Comparator匿名类list.sort(new ComparatorPerson() {Overridepublic int compare(Person p1, Person p2) {//升序return p1.getAge()-p2.getAge();}});//打印集合信息for (Person p : list) {System.out.println(p.getName() : p.getAge());}}
}Getter
Setter
class Person {private int id;private int age;private String name;public Person(int id, int age, String name) {this.id id;this.age age;this.name name;}
}运行结果:
Redis: 6
Java: 18
MySQL: 22
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/915928.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!