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. 根据url下载图片和页面

    需要将&tp=webp&wxfrom=5去掉,既可以在任何地方显示,也可以下载了 http://mmbiz.qpic.cn/mmbiz_jpg/bf8pC39RBhGFOH1ib9Ac ...

  2. .NET:动态代理的 “5 + 1” 模式

    背景 什么叫“动态代理”,代理模式我们都知道,动态代理就是动态生成的代理(采用Emit). 重量级的ORM和IOC产品离不开动态代理,作为开发人员,多数情况不用关注动态代理的内部实现机制,但是了解其一 ...

  3. Scrum 思考

    下个月就要离职,所以这个月特别清闲,上班时间都在上网看书,偶然在Startup News的一篇文章(http://blog.devtang.com/blog/2013/06/17/startup-an ...

  4. T-SQL经典语句(SQL server)

    一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备 ...

  5. TensorFlowIO操作(三)------图像操作

    图像操作 图像基本概念 在图像数字化表示当中,分为黑白和彩色两种.在数字化表示图片的时候,有三个因素.分别是图片的长.图片的宽.图片的颜色通道数.那么黑白图片的颜色通道数为1,它只需要一个数字就可以表 ...

  6. 高性能server框架--I/O模型

    socket在创建的时候默认是堵塞的.我们能够通过socket系统调用的第二个參数传递SOCK_NONBLOCK标志,或者通过fcntl系统调用的F_SETFL命令,将其设置为非堵塞的. 堵塞和非堵塞 ...

  7. Android -- ContentProvider与联系人

    数据库                                                                                         读联系人 raw ...

  8. Android之旅 自我图示总结四大组件

    最近学完了Android的四大组件的基础知识,自己总结了一个图示,希望自己看到这个图的时候能回忆起相关的知识点,与大家分享!

  9. [Compose] 15. Applicative Functors for multiple arguments

    Working our way backwards from solution to problem, we define an applicative functor, then use it to ...

  10. [Compose] 9. Delay Evaluation with LazyBox

    We rewrite the Box example using lazy evaulation. Here is Box example: const Box = (x) => ({ map: ...