В настоящее время я получаю данные из своего списка, но я получаю данные случайным образом, если кто-нибудь может помочь мне отсортировать данные на основе день в числе, я прикрепил изображение своей базы данных. Я хочу отсортировать данные как 1 2 3 4 .. 14 введите описание изображения здесь
Спасибо




для сортировки списков мы можем использовать метод sort(your_list) класса Collections. Это отсортирует список в соответствии с естественным порядком, то есть в порядке возрастания. Поскольку вы хотите, чтобы он отсортировался на основе определенной функции, вы должны реализовать интерфейс 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;
}
}
}`
Предположим, у вас есть класс 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, вы можете отсортировать его в SQL (предложение order by), предполагая, что данные поступают из SQLite.
Или вы можете создать собственный 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 пакет, который вам нужно будет импортировать
Спасибо за ваше время. после вызова client = new ArrayList<>(); содержимое или элементы, присутствующие в моем списке, становятся 0
@saadzahoor Очевидно, вам нужно заполнить список правильными данными, вашими данными! Что выходит за рамки этого вопроса... так что вы можете смело игнорировать эту строку
Отвечает ли это на ваш вопрос? Сортировка ArrayList пользовательских объектов по свойствам