Java中list<Object[]>、list<Student>、list<Map<String,String>>排序
1:list<Object[]>的排序
 public static void main(String[] args) {
// TODO Auto-generated method stub
        Object[] o1 = new Object[4];
        o1[0] = "5";
        o1[1] = "o1";
        o1[2] = "o11";
        o1[3] = "o111";
        Object[] o2 = new Object[4];
        o2[0] = "3";
        o2[1] = "o2";
        o2[2] = "o22";
        o2[3] = "o222";
        List<Object[]> list = new ArrayList<>();
        list.add(o1);
        list.add(o2);
//很明显我们先添加的对象o1,所以先打印o1,
        for (inti = 0; i < list.size(); i++) {
            for (intj = 0; j < 4; j++) {
                System.out.print(list.get(i)[j] + "  ");
            }
        }
        System.out.println("\n排序后-------");
        sortList(list);
//排序后:
        for (inti = 0; i < list.size(); i++) {
            for (intj = 0; j < 4; j++) {
                System.out.print(list.get(i)[j] + "  ");
            }
        }
    }
public staticvoid sortList(List<Object[]> ls) {
        Collections.sort(ls, new Comparator<Object[]>() {
            @Override
            public int compare(Object[] o1, Object[] o2) {
                if (Integer.valueOf(o1[0].toString()) > Integer.valueOf(o2[0].toString())) {
                    return 1;
                }
                return -1;
            }
        });
    }
2:list<Student>排序,主要是正对汉族的排序,按照拼音排序.
首先写一个Student类
    package com.model;
    public class Student {
        public Stringname;
        publicintage;
        public Student(Stringname, intage) {
            this.name = name;
            this.age = age;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getName() {
            returnname;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public int getAge() {
            returnage;
        }
    }
 Student stu1 = new Student("张三", 23);
        Student stu2 = new Student("李四", 25);
        List<Student> listStudent = new ArrayList<>();
        listStudent.add(stu1);
        listStudent.add(stu2);
        System.out.println();
        for (int i = 0; i < listStudent.size(); i++) {
            System.out.print(listStudent.get(i).getName() + "---" + listStudent.get(i).getAge());
        }
        System.out.println("\n排序后");
        sortListStudent(listStudent);
        for (int i = 0; i < listStudent.size(); i++) {
            System.out.print(listStudent.get(i).getName() + "---" + listStudent.get(i).getAge());
        }
写一个排序方法
 public staticvoid sortListStudent(List<Student> ls) {
        Collections.sort(ls, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                String s1 = o1.getName();
                String s2 = o2.getName();
                if (s1.compareTo(s2) > 0) {
                    return -1;
                }
                return 1;
            }
        });
    }
3:list<Map<String,String>>排序问题:
public class MapListSort {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            List<Map<String, String>> listMap = new ArrayList<>();
            Map<String, String> map1 = new HashMap<String, String>();
            map1.put("map001", "001");
            map1.put("map003", "map003");
            map1.put("map002", "map002");
            Map<String, String> map2 = new HashMap<String, String>();
            map2.put("map001", "101");
            map2.put("map003", "map303");
            map2.put("map002", "map202");
            //先添加的map2,但是map2中map001的值大于map1中的map001的值。
            listMap.add(map2);
            listMap.add(map1);
            for (int i = 0; i < listMap.size(); i++) {
                System.out.print(listMap.get(i).get("map001") + "," + listMap.get(i).get("map002") + "," + listMap.get(i).get("map003") + "\n");
            }
            mapSorts(listMap);
            System.out.println("\n排序后:");
            for (int i = 0; i < listMap.size(); i++) {
                System.out.print(listMap.get(i).get("map001") + "," + listMap.get(i).get("map002") + "," + listMap.get(i).get("map003") + "\n");
            }
        }
        public static void mapSorts(List<Map<String, String>> map) {
            Collections.sort(map, new Comparator<Map<String, String>>() {
                @Override
                public int compare(Map<String, String> o1, Map<String, String> o2) {
                    // TODO Auto-generated method stub
                    if (o1.get("map001").compareTo(o2.get("map001")) > 0) {
                        return 1;
                    }
                    return -1;
                }
            });
        }
    }
Java中list<Object[]>、list<Student>、list<Map<String,String>>排序的更多相关文章
- Java中的容器类(List,Set,Map,Queue)
		Java中的容器类(List,Set,Map,Queue) 一.基本概念 Java容器类类库的用途是“保存对象”,并将其划分为两个不同的概念: 1)Collection.一个独立元素的序列,这些元素都 ... 
- Java学习笔记二十四:Java中的Object类
		Java中的Object类 一:什么是Object类: Object类是所有类的父类,相当于所有类的老祖宗,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Object ... 
- Java中的集合(十二) 实现Map接口的WeakHashMap
		Java中的集合(十二) 实现Map接口的WeakHashMap 一.WeakHashMap简介 WeakHashMap和HashMap一样,WeakHashMap也是一个哈希表,存储的也是键值对(k ... 
- 多用多学之Java中的Set,List,Map
		很长时间以来一直代码中用的比较多的数据列表主要是List,而且都是ArrayList,感觉有这个玩意就够了.ArrayList是用于实现动态数组的包装工具类,这样写代码的时候就可以拉进 ... 
- java中key值可以重复的map:IdentityHashMap
		在Java中,有一种key值可以重复的map,就是IdentityHashMap.在IdentityHashMap中,判断两个键值k1和 k2相等的条件是 k1 == k2 .在正常的Map 实现(如 ... 
- Java中的list与Set、Map区别及适用场景
		Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类,但是却让其被继承产生了两个接口,就是Set和List.Set中不能包含重复的元素.List是一个有序的集合,可以包含 ... 
- Java基础学习总结(29)——浅谈Java中的Set、List、Map的区别
		就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ... 
- Java基础(43):Java中的Object类与其方法(转)
		Object类 java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入. Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. O ... 
- Java中list<Object>集合去重实例
		一:Java中list去重的方法很多,下面说一下其中一种方法:把list里的对象遍历一遍,用list.contain(),如果不存在就放入到另外一个list集合中: 二:实例 这里需要注意的是:使用c ... 
随机推荐
- 网页的居中显示,使用了margin、clear:both
			很久没写过页面了,现在写起来也觉得捡起来还是挺快的. 当时遇到了这样的问题,我有一个大的div包涵了整个网站,有网页头部,中部还有底部.头部就是一个标题,中部就是几张图片跟文字排版,结果左右两边的图片 ... 
- python_day05(去爬登录的豆瓣)
			# 爬豆瓣需要用cookie# 需要注意隐藏的参数,即input 里面的默认的一些参数# 需要自己注册一个账户密码import urllib.requestimport http.cookiejarf ... 
- Servlet中web.xml 以及 <url-pattern>总结
			web.xml中添加Servlet配置信息 使用Eclipse创建Servlet,会自动的在WEB-INF下的web.xml中声明,但是有的时候需要我们手动的写入配置信息,以下就是Servlet在we ... 
- upload 上传类
			<?php/**file: fileupload.class.php 文件上传类FileUpload本类的实例对象用于处理上传文件,可以上传一个文件,也可同时处理多个文件上传 */class U ... 
- 程序员的自我救赎---3.1:理解Oauth2.0
			<前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ... 
- 在Notepad++中添加运行快捷键
			在Notepad++中有运行的快捷键,想着如果编辑完Python文件能直接运行就好了,于是尝试了一下. 我安装的是win8.1,安装的notepad++将运行快捷键的文件shortcuts.xml,放 ... 
- vue.js介绍,常用指令,事件,以及制作简易留言版
			一.vue是什么? 一个mvvm框架(库).和angular类似,比较容易上手.小巧,让我们的代码更加专注于业务逻辑,而不是去关注DOM操作 二.vue和angular之间的区别 vue--简单易学 ... 
- 【Codeforces 837D】Round Subset
			http://codeforces.com/contest/837/problem/D 分解质因数,即第i个数的因子2的个数为c2[i],因子5的个数为c5[i],末尾零的个数就是min{Σc2[i] ... 
- 10.0.0.55_12-16训练赛部分writeup
			0x1 - MISC MISC100 一张帅行的照片 目测是图片隐写,但是binwalk并没有出来,应该是对文件头进行了修改 010editor查看一下,发现在jpg文件尾之后还有大量的数据 而且在灰 ... 
- Android 7.1   WindowManagerService 屏幕旋转流程分析 (二)
			一.概述 从上篇[Android 7.1 屏幕旋转流程分析]知道实际的旋转由WindowManagerService来完成,这里接着上面具体详细展开. 调了三个函数完成了三件事,即首先调用update ... 
