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. TRF7970A 天线

  2. /etc/fstab 解析

    http://www.codesec.net/view/39930.html root@qs-wg-db1 /]# cat /etc/fstab LABEL=/ / ext3 defaults 1 1 ...

  3. 字符集UTFMB4

    http://my.oschina.net/leejun2005/blog/232732#OSC_h3_4 http://ju.outofmemory.cn/entry/211473

  4. Mac OS上的远程桌面

    最近在做Mac上面的开发,经常在win7和Mac两台电脑上操作,两个键盘,两个鼠标,搞得头都大了,所以干脆把Mac机器远程到win7上面,统一来做,方便些..哈哈!说实话,Mac键盘那些按键真还有点特 ...

  5. Python 列表(Lists)

    Python 列表(Lists) 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类 ...

  6. PHP:同一件事,有太多的方式

    背景 刚接触PHP,发现PHP做一件事有太多的方式,挺灵活的,这或许是PHP的一种设计哲学,也有可能是语言演化的结果,下面举几个例子. 几个例子 在web中嵌入PHP代码. <?php  ?&g ...

  7. Codeforces Round #261 (Div. 2)[ABCDE]

    Codeforces Round #261 (Div. 2)[ABCDE] ACM 题目地址:Codeforces Round #261 (Div. 2) A - Pashmak and Garden ...

  8. [翻译] YLGIFImage 高效读取GIF图片

    YLGIFImage 高效读取GIF图片 https://github.com/liyong03/YLGIFImage Asynchronized GIF image class and Image ...

  9. Python 日期和时间 —— datetime

    Python 日期和时间 —— datetime Python提供了多个内置模块用于操作日期时间,如calendar,time,datetime.calendar用于处理日历相关 :time提供的接口 ...

  10. SpEL笔记

    SpEL使用示例 <bean id="chineseA" class="com.xxx.bean.Chinese" scope="prototy ...