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;
}
}



然后在main方法中调用,(这里写的是一个java文件)

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>>排序问题:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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;
            }
        });
    }
}









  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值