Java创建comparator对象,java运用Comparator为对象排序

要排序的类需要实现Comparator接口,重写compare方法:

user类及实现接口的内部类:

package test;

import java.util.Comparator;

public class User {

private String userName;

private int age;

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return "User [userName=" + userName + ", age=" + age + "]";

}

}

test:

package test;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Comparator;

import java.util.List;

import org.junit.Test;

public class TestSort {

@Test

public void main() {

// TODO Auto-generated method stub

User user1 = new User();

user1.setUserName("ddd");

user1.setAge(20);

User user2 = new User();

user2.setUserName("aaa");

user2.setAge(30);

User user3 = new User();

user3.setUserName("ccc");

user3.setAge(15);

User user4 = new User();

user4.setUserName("bbb");

user4.setAge(20);

List users = new ArrayList();

users.add(user1);

users.add(user2);

users.add(user3);

users.add(user4);

Collections.sort(users, new MyComparator());

for (User user : users) {

System.out.println(user);

}

}

class MyComparator implements Comparator {

public int compare(Object obj1, Object obj2) {

User u1 = (User) obj1;

User u2 = (User) obj2;

if (u1.getAge() > u2.getAge()) {

return 1;

} else if (u1.getAge() < u2.getAge()) {

return -1;

} else {

// 利用String自身的排序方法。

// 如果年龄相同就按名字进行排序

return -u1.getUserName().compareTo(u2.getUserName());

}

}

}

}

&lbrack;转&rsqb; Java中Comparator进行对象排序

[From] https://blog.51cto.com/thinklili/2063244 Java在8后引入了lambda表达式和流,使得排序方法有了变化 class User { int id ...

List对象排序的通用方法

转自 @author chenchuang import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Me ...

Java - 简单的对象排序 - Comparator

注:对象排序,就是对对象中的某一字段进行比较,以正序或倒序进行排序. 例: 需要排序的对象: public class Person { public int age; public String n ...

&lbrack;Java&rsqb; 使用Comparator排序对象

package test.collections; import java.util.ArrayList; import java.util.Collection; import java.util. ...

Java对象排序

java实现对象比较,可以实现java.lang.Comparable或java.util.Comparator接口 //Product.java import java.util.Date; //p ...

Java 中Comparator 的使用,实现集合排序

目标:实现对Person 对象的年龄,从小到大排序 1.实现排序 package com.app; import java.util.ArrayList; import java.util.Colle ...

Java中Comparable和Comparator实现对象比较

1.通过Comparable实现排序 package Comparable; import java.util.Arrays; public class ComparableUser implemen ...

&lbrack;个人原创&rsqb;关于java中对象排序的一些探讨(三)

这篇文章由十八子将原创,转载请注明,并标明博客地址:http://www.cnblogs.com/shibazijiang/ 对对象排序也可以使用Guava中的Ordering类. 构造Orderin ...

随机推荐

Android studio使用gradle动态构建APP&lpar;不同的包&comma;不同的icon、label&rpar;

最近有个需求,需要做两个功能相似的APP,大部分代码是一样的,只是界面不一样,以前要维护两套代码,比较麻烦,最近在网上找资料,发现可以用gradle使用同一套代码构建两个APP.下面介绍使用方法: 首 ...

NOIP2016之反面教材提供

NOIP 2016信息竞赛总结 竞赛历程总结: 算下来一共学了11个月的信息竞赛,从最初进来的时候大概会一点最最基础的语法,上课什么也听不懂,然后一直追进度,我想在这个阶段中我的问题主要是自己知道自己 ...

【Oracle】多次提交造成性能慢及处理方法

[问题背景] 2013-08-02 为某地市做了1个脚本用于帮客户账户添加一个新的账本.犯了一个很二的错,存储过程如下(SQL记录用户以后查询),一晚上只执行了190W数据 脚本如下 数据库中总共有5 ...

Java调用外部程序常用算法和封装类

一个项目不可能只使用一种编程语言来开发,也不可能由一个人开发,所以,Java程序员要学会和使用其他编程语言的程序员合作.那么,让我来发布一个工具类--Java外接程序扩展包,并将相应算法发布.Java ...

一张图看懂dex

最近在看dex文件格式,看的是飞虫大大的android软件安全与逆向分析一书,写的条理很清晰.相对于elf文件来说,dex文件格式简单了很多,但是提到某个字段,仍然难以想象其所处位置.所以一直想用思维 ...

HDU1005 找规律 or 循环点 or 矩阵快速幂

http://acm.hdu.edu.cn/showproblem.php?pid=1005 1.一开始就注意到了n的数据范围 <=100 000 000,但是还是用普通的循环做的,自然TLE了 ...

关于Mui严格模式下的报错解决方案

前言:作为一名程序员遇到Bug总是在所难免的,但是记住"不二过",今天在Vue开发中遇到了一个报错让我纠结了许久,找了许久, 报错的原因是使用了mui导入其js文件导致的. 报错信 ...

android studio 学习之一 安装和基本使用

一.简介 Android Studio 是一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开 ...

restful &colon; 面向资源架构

restful 规范 1. API与用户的通信协议,https协议 2. 域名 https://api.example.com 尽量将API部署在专用域名 https://example.org/ap ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值