自定义规则,对List<Map<String,Object>> List<Object>进行排序
package lltse.java.collection; import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random; public class ListDemo { /**
* @param args
*/
public static void main(String[] args)
{
System.out.println("---------------开始-----------------------");
List<Map<String, Object>> students = getSortStudentList();
for(Map<String,Object> map:students)
{
System.out.println("Student:>>>"+map.get("Student"));
System.out.println("distance:>>>"+map.get("distance"));
} System.out.println("---------------分割线-----------------------"); List<Object> persons = getSortPerson();
for(Object p :persons)
{
System.out.println("Person Name:>>>"+((Person)p).getName());
System.out.println("Person Sex:>>>"+((Person)p).getSex());
System.out.println("Person Age:>>>"+((Person)p).getAge());
}
System.out.println("---------------结束-----------------------");
} /**
* 对List中的对象按照距离进行排序
* @return
*/
public static List<Map<String, Object>> getSortStudentList()
{
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Random rd = new Random(100);
for (int i = 0; i < 5; i++)
{
Map<String, Object> map = new HashMap<String, Object>();
map.put("Student", "Student" + i);
map.put("distance", rd.nextDouble()); list.add(map);
} //Collections.synchronizedList(list);
//自定义排序规则,进行排序
Collections.sort(list, new Comparator<Map<String, Object>>()
{
@Override
public int compare(Map<String, Object> o1, Map<String, Object> o2)
{
Double d1 = (Double)o1.get("distance");
Double d2 = (Double)o2.get("distance");
return d1.compareTo(d2);
}
}); return list;
} /**
* 引用外部比较器,将人员按年龄排序
* @return
*/
public static List<Object> getSortPerson()
{
List<Object> list = new ArrayList<Object>();
Random rd = new Random();
for(int s = 1;s <= 10; s++)
{
Person p = new Person();
p.setAge(rd.nextInt(100));
p.setName("Person"+s);
String sex = "男";
if(s % 2 > 0)
{
sex = "女";
}
p.setSex(sex); list.add(p);
}
TestCompartor tc = new TestCompartor();
Collections.sort(list, tc); return list;
}
} /**
* 比较器类,按年龄升序排列
* @author Administrator
*
*/
class TestCompartor implements Comparator<Object>
{
@Override
public int compare(Object o1, Object o2) { Person p1 = (Person)o1;
Person p2 = (Person)o2;
if(p1.getAge()>p2.getAge())
{
return 1;
}
else
{
return -1;
}
}
}
测试输出结果如下:
---------------开始-----------------------
Student:>>>Student1
distance:>>>0.19497605734770518
Student:>>>Student4
distance:>>>0.6186076060240648
Student:>>>Student2
distance:>>>0.6671595726539502
Student:>>>Student0
distance:>>>0.7220096548596434
Student:>>>Student3
distance:>>>0.7784408674101491
---------------分割线-----------------------
Person Name:>>>Person8
Person Sex:>>>男
Person Age:>>>11
Person Name:>>>Person7
Person Sex:>>>女
Person Age:>>>15
Person Name:>>>Person6
Person Sex:>>>男
Person Age:>>>19
Person Name:>>>Person10
Person Sex:>>>男
Person Age:>>>33
Person Name:>>>Person4
Person Sex:>>>男
Person Age:>>>46
Person Name:>>>Person9
Person Sex:>>>女
Person Age:>>>53
Person Name:>>>Person3
Person Sex:>>>女
Person Age:>>>66
Person Name:>>>Person5
Person Sex:>>>女
Person Age:>>>74
Person Name:>>>Person2
Person Sex:>>>男
Person Age:>>>79
Person Name:>>>Person1
Person Sex:>>>女
Person Age:>>>82
---------------结束-----------------------
自定义规则,对List<Map<String,Object>> List<Object>进行排序的更多相关文章
- java编程排序之内置引用类型的排序规则实现,和自定义规则实现+冒泡排序运用
第一种排序:[冒泡排序]基本数据类型的排序. [1]最简易的冒泡排序.效率低.因为比较的次数和趟数最多. /** * 最原始的冒泡排序. * 效率低. * 因为趟数和次数最多.都是按最大化的循环次数进 ...
- JAVA中对List<Map<String,Object>>中的中文汉字进行排序
转载于:http://blog.csdn.net/flykos/article/details/54631573 参考:http://www.jb51.net/article/88710.htm 本篇 ...
- JavaBean与Map<String,Object>相互转换
一.为什么要实现javaBean与Map<String,Object>相互转换 Spring中的BaseCommandController对象可以将传递过来的参数封装到一个JavaBean ...
- mybatis使用Map<String,Object>映射mysql结果集,关于字段的问题
--mysql常用字段类型如图 --mybatis使用Map<String,Object>映射,会将tinyint映射成Integer类型.decimal映射成BigDecimal类型 所 ...
- 分页查询和分页缓存查询,List<Map<String, Object>>遍历和Map遍历
分页查询 String sql = "返回所有符合条件记录的待分页SQL语句"; int start = (page - 1) * limit + 1; int end = pag ...
- 使用 JDBC 和 JavaTemplate 查询SQL语句返回 List<Map<String,Object>>
使用JDBC执行sql语句返回List 类型: public class JdbcUtil { private static Log log = LogFactory.getLog(JdbcUtil. ...
- List<Map<String,Object>>使用Java代码遍历
List<Map<String,Object>>的结果集怎么使用Java代码遍历以获取String,Object的值: package excel; import java.u ...
- java中对List<Map<String,Object>>中的中文汉字排序
import java.text.Collator;import java.util.ArrayList;import java.util.Collections;import java.util.C ...
- javaBean与Map<String,Object>互转
背景:有时候想不通阿帕奇的BeanUtils是怎么进行map和Bean互相转化的. 工作闲暇之余,自己写个一小段代码,一探究竟,试试才发现,原来一切并非我们想的那么什么和复杂. 注:这里只是简单实例, ...
随机推荐
- mOByDiC E90C2600 EOBD/OBDII to RS232 gateway
http://www.ozenelektronik.com/downs/pdf/oe90c2600.pdf Features • Compatible with EOBD/OBDII standard ...
- ASP.NET数据库连接字符串总结
一.使用OleDbConnection对象连接OLE DB数据源 1.连接Access 数据库 Access 2000: “provider=Microsoft.Jet.Oledb.3.5;Data ...
- CentOS6.5配置网络
[ CleverCode发表在csdn博客中的原创作品,请勿转载.原创地址:http://blog.csdn.net/clevercode/article/details/46376985] 1 网卡 ...
- matlab 图像常用函数
Canny function [ canny ] = canny( rgb ) temp=rgb2gray(rgb); canny=edge(temp,'canny'); end 灰度 temp=rg ...
- Java Memory Management Skill List
Java内存管理小技巧: 尽量使用直接量 当需要使用字符串,还有Byte,Short,Integer,Long,Float,Double,Boolean,Character包装类的实例时,程序不应该采 ...
- DRP——JDBC中的Batch
在jdbc2.0里添加了批量处理的功能(batch),其同意将多个sql语句作为一个单元送至数据库去运行,这样做能够提高操作效率.在操作大量的数据时, ORM框架实现批量是非常慢的.我们能够使用jdb ...
- Thinkphp错误-phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连
phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接.您应该检查配置文件中的主机.用户名和密码,并确认这些信息与 MySQL 服务器管理员所给出的信息一致. 原因有可能是因为修改了m ...
- PHP 支持简写方式
在我的Windows系统里使用的是"WAMP"集成环境 如果要让PHP支持简写方式则需要在PHP.ini里将short_open_tag 设置为on 更改php.ini文件后需要重 ...
- Windows Server 2012 R2如何编辑hosts文件
在我的Windows Server 2012 R2系统里编辑hosts文件则会出现没有无法保存的问题,原因是权限不足 错误信息:" Unable to save C:\Windows\Sys ...
- System.Drawing.Color的颜色对照表
经常使用System.Drawing.Color, 本篇介绍一下颜色与名称及RGB值的对应关系. 1. 颜色与名称的对照表(点击下图放大看): 2. 颜色与RGB值对照表: Color.AliceBl ...