java中一个List集合,放的都是从不同的表中查出来的数据,请问我怎样可以根据其中的一个字段进行list排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中一个List集合,放的都是从不同的表中查出来的数据,请问我怎样可以根据其中的一个字段进行list排序相关的知识,希望对你有一定的参考价值。

用 Collections.sort()排序,给你个例子,你参考下

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

public class $ 
    public static void main(String[] args) 

        List<Bean> data = new ArrayList<Bean>();
        data.add(new Bean("aaaaa", 20));
        data.add(new Bean("bbbbb", 10));

        System.out.println("排序前:" + data);

        Collections.sort(data, new Comparator<Bean>() 
            public int compare(Bean o1, Bean o2) 
                return o1.getName().compareTo(o2.getName());
            
        );
        System.out.println("按name升序:" + data);

        Collections.sort(data, new Comparator<Bean>() 
            public int compare(Bean o1, Bean o2) 
                return o2.getName().compareTo(o1.getName());
            
        );
        System.out.println("按name降序:" + data);

        Collections.sort(data, new Comparator<Bean>() 
            public int compare(Bean o1, Bean o2) 
                return o1.getAge() - o2.getAge();
            
        );
        System.out.println("按age升序:" + data);

        Collections.sort(data, new Comparator<Bean>() 
            public int compare(Bean o1, Bean o2) 
                return o2.getAge() - o1.getAge();
            
        );
        System.out.println("按age降序:" + data);
    


class Bean 

    private String name;

    private int age;

    public Bean(String name, int age) 
        this.name = name;
        this.age = age;
    

    public String getName() 
        return name;
    

    public void setName(String name) 
        this.name = name;
    

    public int getAge() 
        return age;
    

    public void setAge(int age) 
        this.age = age;
    

    public String toString() 
        return "[" + name + "," + age + "]";
    

追问

我的List中放的不是一个实体类啊,而是从多张表中查询出来的数据

参考技术A 把这个list集合中的所有元素,全部都把这个元素的要比较字段的值取出来放到数组里边,
然后对这些值进行排序,再对应到list集合即可本回答被提问者采纳
参考技术B 需要自己写一个比较器
假设类型是
class 你的类型
public 字段类型 字段名;//这里为了方便设置成public 千万别学哦~

自己写的比较器:
Comparator<你的类型> com=new Comparator<你的类型>()
public int compare(你的类型 left,你的类型 right)
自己定义比较规则;
如果 "小于"则返回-1 等于返回0 "大于"返回1;
//至于怎样算是 "小于" 靠你自己定义了

;

java将数据库中菜单表中内容转化成一个导航树

数据库中字段:

menuId   parentMenuId    menuName   link等

首先我们肯定是将所有的菜单从数据库中查到一个List中,下面我们需要对这个数组进行处理,将这个list转化成树的格式

原来的时候处理都很麻烦,需要去做递归操作,类似这种思路

1、找到根菜单

2、根据根菜单的id去查找整个数组中parentId为这个id的对象,放到list中

3、对于根组件的子菜单进行2操作,知道找不到子菜单为止

这样的话需要每次都需要从整个数组中查找,不管某一个是否已经经过处理了。

 

改进点,jdk8中可以通过list的方法做分组操作

stuList.stream().collect(Collectors.groupingBy(Student::getStuName));

list对象                                                        list中对象类型    分组的方法

通过这个方法就可以将一个list转化成键为分组字段,值为分到该组中对象的list  的map类型

这时候你就可以递归起来了,直接找到把那个list往里面插,少了很多代码。

以上是关于java中一个List集合,放的都是从不同的表中查出来的数据,请问我怎样可以根据其中的一个字段进行list排序的主要内容,如果未能解决你的问题,请参考以下文章

JAVA中List集合的汉字排序

java获取list相同的数据

怎么用Qt的TableView来显示数据,数据有些来自MySQL的表中(多张不同的表),并且有些数据并不是从MySQL取

stream中查库,属于循环查库吗

利用List集合实现栈的先进后出?

java将数据库中菜单表中内容转化成一个导航树