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>进行排序的更多相关文章

  1. java编程排序之内置引用类型的排序规则实现,和自定义规则实现+冒泡排序运用

    第一种排序:[冒泡排序]基本数据类型的排序. [1]最简易的冒泡排序.效率低.因为比较的次数和趟数最多. /** * 最原始的冒泡排序. * 效率低. * 因为趟数和次数最多.都是按最大化的循环次数进 ...

  2. JAVA中对List<Map<String,Object>>中的中文汉字进行排序

    转载于:http://blog.csdn.net/flykos/article/details/54631573 参考:http://www.jb51.net/article/88710.htm 本篇 ...

  3. JavaBean与Map<String,Object>相互转换

    一.为什么要实现javaBean与Map<String,Object>相互转换 Spring中的BaseCommandController对象可以将传递过来的参数封装到一个JavaBean ...

  4. mybatis使用Map<String,Object>映射mysql结果集,关于字段的问题

    --mysql常用字段类型如图 --mybatis使用Map<String,Object>映射,会将tinyint映射成Integer类型.decimal映射成BigDecimal类型 所 ...

  5. 分页查询和分页缓存查询,List<Map<String, Object>>遍历和Map遍历

    分页查询 String sql = "返回所有符合条件记录的待分页SQL语句"; int start = (page - 1) * limit + 1; int end = pag ...

  6. 使用 JDBC 和 JavaTemplate 查询SQL语句返回 List<Map<String,Object>>

    使用JDBC执行sql语句返回List 类型: public class JdbcUtil { private static Log log = LogFactory.getLog(JdbcUtil. ...

  7. List<Map<String,Object>>使用Java代码遍历

    List<Map<String,Object>>的结果集怎么使用Java代码遍历以获取String,Object的值: package excel; import java.u ...

  8. java中对List<Map<String,Object>>中的中文汉字排序

    import java.text.Collator;import java.util.ArrayList;import java.util.Collections;import java.util.C ...

  9. javaBean与Map<String,Object>互转

    背景:有时候想不通阿帕奇的BeanUtils是怎么进行map和Bean互相转化的. 工作闲暇之余,自己写个一小段代码,一探究竟,试试才发现,原来一切并非我们想的那么什么和复杂. 注:这里只是简单实例, ...

随机推荐

  1. mOByDiC E90C2600 EOBD/OBDII to RS232 gateway

    http://www.ozenelektronik.com/downs/pdf/oe90c2600.pdf Features • Compatible with EOBD/OBDII standard ...

  2. ASP.NET数据库连接字符串总结

    一.使用OleDbConnection对象连接OLE DB数据源 1.连接Access 数据库 Access 2000: “provider=Microsoft.Jet.Oledb.3.5;Data ...

  3. CentOS6.5配置网络

    [ CleverCode发表在csdn博客中的原创作品,请勿转载.原创地址:http://blog.csdn.net/clevercode/article/details/46376985] 1 网卡 ...

  4. matlab 图像常用函数

    Canny function [ canny ] = canny( rgb ) temp=rgb2gray(rgb); canny=edge(temp,'canny'); end 灰度 temp=rg ...

  5. Java Memory Management Skill List

    Java内存管理小技巧: 尽量使用直接量 当需要使用字符串,还有Byte,Short,Integer,Long,Float,Double,Boolean,Character包装类的实例时,程序不应该采 ...

  6. DRP——JDBC中的Batch

    在jdbc2.0里添加了批量处理的功能(batch),其同意将多个sql语句作为一个单元送至数据库去运行,这样做能够提高操作效率.在操作大量的数据时, ORM框架实现批量是非常慢的.我们能够使用jdb ...

  7. Thinkphp错误-phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连

    phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接.您应该检查配置文件中的主机.用户名和密码,并确认这些信息与 MySQL 服务器管理员所给出的信息一致. 原因有可能是因为修改了m ...

  8. PHP 支持简写方式

    在我的Windows系统里使用的是"WAMP"集成环境 如果要让PHP支持简写方式则需要在PHP.ini里将short_open_tag 设置为on 更改php.ini文件后需要重 ...

  9. Windows Server 2012 R2如何编辑hosts文件

    在我的Windows Server 2012 R2系统里编辑hosts文件则会出现没有无法保存的问题,原因是权限不足 错误信息:" Unable to save C:\Windows\Sys ...

  10. System.Drawing.Color的颜色对照表

    经常使用System.Drawing.Color, 本篇介绍一下颜色与名称及RGB值的对应关系. 1. 颜色与名称的对照表(点击下图放大看): 2. 颜色与RGB值对照表: Color.AliceBl ...