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. 试了一把Intel的核显转码的威力

    今天小试了一把Intel Cpu的核显转码的威力,确实非常快,使用的工具是MediaCoder,能达到10x的速度,效果非常明显,并且CPU占用非常低.为了比较,实用x264纯转同一个文件的,软编码能 ...

  2. USACO numtri 数塔问题

    /* ID:kevin_s1 PROG:numtri LANG:C++ */ #include <iostream> #include <cstdio> #include &l ...

  3. 玩转windowbuilder pro

    windowbuilder,也就是原来的SWT Designer.Google收购了Instantiations,把它的工具也重新免费发布了. 下载地址:http://www.eclipse.org/ ...

  4. haitaolab.com 我的新网站,欢迎访问

    从博客园到csdn,再到新浪云博客,最近终于下决心购买空间和域名建立自己的独立网站! 在这里也建议希望建立自己独立博客的朋友尽快行动吧! 我的新的网站“海淘实验室”专注于介绍和分享海淘资讯,欢迎大家访 ...

  5. 如何写科技论文How to write a technical paper

    This is the evolving set of recommendations I share with my graduate students for technical writing. ...

  6. iOS:判断引导页首次出现、版本更新

    判断引导页首次出现方式: //选择根控制器 +(void)chooseRootViewController{ //初始化Window窗口 [AppDelegate Delegate].window = ...

  7. C#创建word,操作、读写

    要使用C#操作word,首先要添加引用: 1.添加引用->COM->Microsoft Word 11.0 Object Library 2.在.cs文件中添加 using Word;下面 ...

  8. SQL Server Service Broker 简单例子 (转)

    SQL Server Service Broker服务体系结构 消息类型 — 定义应用程序间交换的消息的名称.还可以选择是否验证消息.约定 — 指定给定会话中的消息方向和消息类型.队列 — 存储消息. ...

  9. [JS Compose] 3. Use chain for composable error handling with nested Eithers (flatMap)

    We refactor a function that uses try/catch to a single composed expression using Either. We then int ...

  10. (剑指Offer)面试题7:用两个栈实现队列

    题目: 用两个栈实现一个队列. 队列的声明如下:请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能. 思路: 根据栈的“先进后出”特点, ...