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 ...
随机推荐
- Less的Extend_Less继承
Extend就相当于Java的继承,它允许一个选择器继承另一个选择器的样式.Extend有两种语法格式. 一种是: <selector>:extend(<parentSelector ...
- 《Maven实战》 第7章 生命周期与插件
7.1什么是生命周期 软件开发人员每天都在对项目进行清理.编译.测试及部署,Maven生命周期是对所有构建过程进行抽象和统一,含项目的清理.初始化.编译.测试.打包.集成测试.验证.部署和站点生成等几 ...
- Linux 链接详解----动态链接库
静态库的缺点: 库函数被包含在每一个运行的进程中,会造成主存的浪费. 目标文件的size过大 每次更新一个模块都需要重新编译,更新困难,使用不方便. 动态库: 是一个目标文件,包含代码和数据,它可以在 ...
- Javascript 数组(Array)相关内容总结
创建数组 var colors = new Array(); //创建新数组 var num = new Array(3); //创建包含三项的新数组 var names = new Array(&q ...
- Scala入门系列(五):面向对象之类
定义类 // 定义类,包含field以及method class HelloWorld { private var name = "Leo" def sayHello() { pr ...
- 十一招让Ubuntu 16.04用起来更得心应手(转)
ubuntu 16.04是一种长期支持版本(LTS),是Canonical承诺发布五年的更新版.也就是说,你可以让这个版本在电脑上运行五年! 这样一来,一开始就设置好显得特别重要.你应该确保你的软件是 ...
- angularjs 给封装的模态框元素传值,和实现兄弟传值
本例实现封装的元素所放的位置不同,而选择不同的传值,这里举例封装了bootstrap模态框,以后也方便大家去直接使用.方法举例如下:首先主页调用css/js有: <link rel=" ...
- UWP 实现App多语言为所欲为切换
为所欲为,嗯 话不多说,先看效果吧(事先说明,我的方法不是最好的,但是我用着最有效.) [吐槽一下博客园上传的图片,我的App敲鸡漂亮滴,自带亚克力效果,怎么图片上传上来这么多的噪点啊.] [ 商店地 ...
- CS Round#53 E Maxor
题意:给你N个数,你可以从中选出两个数将它们or起来得到M,求M的最大值及得到最大值的方案数. 刚了半个小时得到了一个貌似时O(N log max(Ai)^2)的方法,想了想发现貌似只能做出第一问,但 ...
- Linux 两台服务器之间传输文件和文件夹
今天处理一个项目要迁移的问题,突然发现这么多图片怎么移过去,可能第一时间想到的是先从这台服务器下载下来,然后再上传到另外一台服务器上面去,这个方法确实是可行,但是实在是太费时间了,今天我就教大家怎么快 ...