根据dayInNumber排序对象

时间:2019-04-28 02:42:09

标签: java android

当前,我从列表中获取数据,但我是随机获取数据,如果有人可以根据 dayInNumber 帮助我对数据进行排序,则我已附加了数据库图片。我想对数据进行排序,例如1 2 3 4 .. 14 enter image description here

谢谢

2 个答案:

答案 0 :(得分:0)

对于排序列表,我们可以使用Collections类的sort(your_list)方法。这将按照自然顺序(即升序)对列表进行排序。由于您希望它根据特定功能进行排序,因此您应该以与列表相同的类型来实现Comparator接口。您将必须实现compareTo方法。请参考以下代码以获取FYR:-`

public class Temp implements Comparable<Temp> {
    Temp(int a, int b) {
        this.a = a;
        this.b = b;
    }

    int a;
    int b;
    public static void main(String[] args) {

        Temp t1 = new Temp(11,2);
        Temp t2 = new Temp(9,5);
        Temp t3 = new Temp(1,7);
        Temp t4 = new Temp(10,9);
        Temp t5 = new Temp(14,11);

        ArrayList<Temp> al = new ArrayList<Temp>();
        al.add(t1);
        al.add(t2);
        al.add(t3);
        al.add(t4);
        al.add(t5);
        Collections.sort(al);
        for(Temp i:al) {
            System.out.println(i.a+"," +i.b);
        }
    }

    @Override
    public int compareTo(Temp o) {
        if(a==o.a) {
            return 0;
        }
        else if(a>o.a) {
            return 1;  
        }
        else {
            return -1;
        }
    }
}`

答案 1 :(得分:0)

假设您将Client类定义为

class Client {

    private long dayInNumber;
    private String clientName;
    private String day;

   //setters and getters ommitted for brevity and clarity
}

然后您有一个客户列表

List<Client> clients = new ArrayList<>();

要对dayInNumber进行排序,可以假定数据来自SQLite,也可以在SQL(order by子句)中对其进行排序。

或者您可以创建Comparator<T>个对象的自定义Client来按以下代码进行排序

import java.util.Comparator;

public class ClientDayInNumberComparator implements Comparator<Client> {

    @Override
    public int compare(Client c1, Client c2) {
        if(c1.getDayInNumber() > c2.getDayInNumber()) return 1;
        else if(c1.getDayInNumber() < c2.getDayInNumber()) return -1;
        else
            return 0;
    }

}

这将按dayInNumber升序对客户端进行排序(1、2、3,... N)。然后按如下所示使用它

List<Client> clients = new ArrayList<>();
Collections.sort(clients, new ClientDayInNumberComparator());

Collections包装在java.utils软件包中,您需要将其导入