ArrayList实现根据某属性大小相间排序
Java本身提供了一个集合的帮助类java.util.Collections,提供了对集合操作一些方法,借助于此类提供的sort方法可以实现对List进行排序操作
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List; public class CollectionsTest {
public static void main(String[] args) {
List<User> list=new ArrayList<User>();
//向List中添加3个测试User
for (int i = 0; i < 3; i++) {
list.add(new User("user"+i,Math.random()*100,i));
}
//对User按照age降序排序
Collections.sort(list, new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
return o1.age>o1.age?-1:1;
} });
System.out.println(list.toString()); } }
class User{
public String name;
public double weight;
public int age;
public User(String name, double weight, int age) {
super();
this.name = name;
this.weight = weight;
this.age = age;
}
@Override
public String toString() {
return "User [name=" + name + ", weight=" + weight + ", age=" + age
+ "]";
}
}
运行结果如下:
[User [name=user2, weight=58.258765180626824, age=2], User [name=user1, weight=5.67998519085704, age=1], User [name=user0, weight=45.10058689997257, age=0]]
可以看到成功的按照age降序排序了。
但是有些时候我们可能需要按照某属性进行大小相间排序,比如说饼状图旁边会有相关的文字说明,在某些极端的情况下可能会出现说明文字重叠的现象,这个时候如果按照一个大的一个小的,大小交叉来显示反而会能够正常显示。


新建一个工具类来对已经进行排序的List进行大小相间排序
class DisorderListUtil {
public static <T> void sort(List<T> list){
Object[] a = list.toArray();
int n=a.length;
for (int i = 1; i < n/2+1; i+=2) {
T l=list.get(i);
list.set(i, list.get(n-i-1));
list.set(n-i-1, l);
}
}
}
这样就能通过修改引用地址对List进行大小相间排序。
Collections.sort(list, new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
return o1.age>o1.age?-1:1;
}
});
//在这里添加
DisorderListUtil.sort(list);
System.out.println(list.toString());
ArrayList实现根据某属性大小相间排序的更多相关文章
- du 使用详解 linux查看目录大小 linux统计目录大小并排序 查看目录下所有一级子目录文件夹大小 du -h --max-depth=1 |grep [
常用命令 du -h --max-depth=1 |grep [TG] |sort #查找上G和T的目录并排序 du -sh #统计当前目录的大小,以直观方式展现 du -h --max-d ...
- js sort方法根据数组中对象的某一个属性值进行排序
sort方法接收一个函数作为参数,这里嵌套一层函数用来接收对象属性名,其他部分代码与正常使用sort方法相同. var arr = [ {name:'zopp',age:0}, {name:'gpp' ...
- js sort方法根据数组中对象的某一个属性值进行排序(实用方法)
js sort方法根据数组中对象的某一个属性值进行排序 sort方法接收一个函数作为参数,这里嵌套一层函数用来接收对象属性名,其他部分代码与正常使用sort方法相同. var arr = [ {nam ...
- 解决java中按照数字大小来排序文件
我们想要输出(1.jpg.2.jpg.3.jpg.10.jpg.11.jpg.20.jpg.21.jpg.31.jpg) 突然看到网上一些写法 总结:既然自己按照定义的文件名规则来处理,也可以进行使用 ...
- du---查看文件夹大小-并按大小进行排序
使用df 命令查看当前磁盘使用情况: df -lh [root@gaea-dev-xjqxz-3 ~]$ df -lh Filesystem Size Used Avail Use% Mounted ...
- 如何让SQLServer的 itemNum 字段 按照数字大小顺序排序
我的 itemNum 从1到20,可是超过了SQLServer的默认排序这样的1101112...19234567如何才能让排序成为这样1234567891011.. . 解决办法:因为 itemNu ...
- python创建有序字典及字典按照值的大小进行排序
有序字典 在Python中,字典类型里面的元素默认是无序的,但是我们也可以通过collections模块创建有序字典 # -*- coding:utf-8 -*- # python有序字典需导入模块c ...
- [Linux] du-查看文件夹大小-并按大小进行排序
reference : http://blog.csdn.net/jiaobuchong/article/details/50272761# 某天,我想检查一下电脑硬盘的的使用情况,作为一个命令控,废 ...
- 【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】
方法1:通过get()方法获取属性值 package com.sxd.test.controller; public class FirstCa{ private Integer num; priva ...
随机推荐
- JS window.open()财产
一. Window 对象 Window 对象是 JavaScript 顶级对象层次. Window 对象表示一个浏览器窗口或帧. Window 在对象 <body> 或 <frame ...
- iterator pattern
6 迭代器模式总结 迭代器模式是一种使用频率非常高的设计模式,通过引入迭代器可以将数据的遍历功能从聚合对象中分离出来,聚合对象只负责存储数据,而遍历数据由迭代器来完成.由于很多编程语言的类库都已经实现 ...
- Codeforces Round #258 (Div. 2) B. Sort the Array
题目链接:http://codeforces.com/contest/451/problem/B 思路:首先找下降段的个数,假设下降段是大于等于2的,那么就直接输出no,假设下降段的个数为1,那么就把 ...
- 【Jqurey EasyUI+Asp.net】---DataGrid增加、删、更改、搜
在前面写了两,但不知道如何完成,对比刚刚开始学这个,他们摸着石头过河,一步步.在最后两天DataGridCRUD融合在一起.因此份额.我希望像我这样谁是刚刚开始学习一些帮助. 直接主题酒吧. 它是说数 ...
- Entity Framework mvc Code First data migration
1. Code First 可以先在代码里写好数据模型,自动生成DB.下一次启动的时候会根据__MigrationHistory判断 数据库是否和模型一致. 详情参考:http://blogs.msd ...
- 并发编程实践三:Condition
Condition实例始终被绑定到一个锁(Lock)上.Lock替代了Java的synchronized方法,而Condition则替代了Object的监视器方法,包含wait.notify和noti ...
- Cocos2d-x-Lua 开发一个简单的游戏(记数字步进白色块状)
Cocos2d-x-Lua 开发一个简单的游戏(记数字步进白色块状) 本篇博客来给大家介绍怎样使用Lua这门语言来开发一个简单的小游戏-记数字踩白块. 游戏的流程是这种:在界面上生成5个数1~5字并显 ...
- 信息二战炸弹:中国到美国咨询公司Say no
疯抢/文 在禁止Windows8操作系统參与政府採购,以及在中国销售的全部外国IT产品和服务都须通过新的安全审查之后,英国<金融时报>今天报料中国已禁止国企使用美国咨询公司服务. 这则消息 ...
- iphone6 plus有什么办法
在苹果9月9号最新的秋季公布会上苹果官方公布了最新的iPhone6 plus,可能非常多朋友不知道plus是什么意思,这样命名有什么特殊的意义呢?本次Ly经典家居小编就为大家带来这方面的具体解答,一起 ...
- Play Modules Morphia 1.2.9a 之 Aggregation and Group aggregation
聚合 和 分组聚合: PlayMorphia 它提供了基于开发人员models的友好接口 设想你定义了一个model.class Sales: @Entity public class Sales e ...