欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

详解JAVA使用Comparator接口实现自定义排序

时间:2021-03-30 09:08:36|栏目:JAVA代码|点击:

1、原则

Comparator接口可以实现自定义排序,实现Comparator接口时,要重写compare方法:
int compare(Object o1, Object o2) 返回一个基本类型的整型
如果要按照升序排序,则o1 小于o2,返回-1(负数),相等返回0,01大于02返回1(正数)
如果要按照降序排序,则o1 小于o2,返回1(正数),相等返回0,01大于02返回-1(负数)

 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
 
 public class UserComparator implements Comparator < User > {
 
 public static void main( String[] args ) {
 List < User > users = new ArrayList < User >();
 users.add( new User( 10, "a" ) );
 users.add( new User( 11, "d" ) );
 users.add( new User( 15, "s" ) );
 users.add( new User( 6, "x" ) );
 users.add( new User( 17, "a" ) );
 users.add( new User( 17, "b" ) );
 users.add( new User( 17, "c" ) );
 users.add( new User( 17, "d" ) );
 UserComparator comparator = new UserComparator();
 
 users.sort( comparator );
 // 也可以使用:Collections.sort( users, comparator );
 
 for ( User u : users ) {
 System.out.println( u );
 }
 }
 
 @Override
 public int compare( User u1, User u2 ) {
 if ( u1.equals( u2 ) ) {
 return 0;
 }
 else if ( u1.getAge() < u2.getAge() ) {
 return 1;
 }
 else if ( u1.getAge() == u2.getAge() ) {
 int f = u1.getName().compareTo( u2.getName() );
 if ( f < 0 ) {
  return -1;
 }
 return 0;
 }
 else {
 return -1;
 }
 }
 }
 
 class User {
 private int age;
 private String name;
 
 public User() {
 
 }
 
 public User( int age, String name ) {
 this.age = age;
 this.name = name;
 }
 
 public int getAge() {
 return age;
 }
 
 public void setAge( int age ) {
 this.age = age;
 }
 
 public String getName() {
 return name;
 }
 
 public void setName( String name ) {
 this.name = name;
 }
 
 @Override
 public String toString() {
 return "User [age=" + age + ", name=" + name + "]";
 }
 
 }
User [age=17, name=a]
User [age=17, name=b]
User [age=17, name=c]
User [age=17, name=d]
User [age=15, name=s]
User [age=11, name=d]
User [age=10, name=a]
User [age=6, name=x]

上一篇:Java concurrency线程池之Callable和Future_动力节点Java学院整理

栏    目:JAVA代码

下一篇:java实现简单的推箱子小游戏

本文标题:详解JAVA使用Comparator接口实现自定义排序

本文地址:http://www.codeinn.net/misctech/91118.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有