Java: J'ai une liste de voitures que je veux trier par Registrationumber (String) qui se trouve dans l'un des éléments de la liste


J'ai un ist en java, qui a des objets car à l'intérieur, et à l'intérieur de l'un des objets car se trouve une chaîne nommée Registrationumber, et je veux trier la liste par cela Liste des voitures = new ArrayList ();

public Collection<ICar> sortedByRegistrationNumber() {

}
Author: Elias , 2017-06-09

3 answers

if (list.size() > 0) {
  Collections.sort(list, new Comparator<Car>() {
      @Override
      public int compare(final Car object1, final Car object2) {
          return object1.getRegNo().compareTo(object2.getRegNo());
      }
  });
}

Si vous utilisez Java 8, alors vous pouvez le faire comme ceci:

list.stream()
  .sorted((object1, object2) -> object1.getRegNo().compareTo(object2.getRegNo()));
 3
Author: Avijit Karmakar, 2017-06-09 07:48:21

Salut Il y a deux façons de le faire.

  1. Utilisation d'une interface comparable: Dans ce cas, votre bean lui-même doit être implémenté avec une interface appelée comparable et remplacer une méthode compareTo dans laquelle vous écrirez une logique sur la base de laquelle vous voulez que les classes comparent dans votre cas reg No. Le problème est que si à l'avenir vous voulez avoir un tri sur la base de supposons faire année ou quoi que ce soit d'autre, vous ne pouvez pas le faire.

    public class Car implements Comparable<Car>{
    
        private String regNo;
    
            public Car(String regNo){
                super();
                this.regNo = regNo;
            }
    
            public String getRegNo(){
                return regNo;
            }
    
            public void setRegNo(String regNo){
                this.regNo = regNo;
            }
    
            @Override
            public int compareTo(Car o){  
    
                // Here when we compare if both the variables are equal return 0
                if(this.regNo.equals(o.getRegNo())){
                    return 0;  
                // If first one is bigger than the latter return 1
                }else if(this.regNo.compareTo(o.getRegNo()) > 0){
                    return 1; 
                // else return 0
                }else{
                    return -1;  
                }
            }  
        }
    

    À Test:

      Car c1 =  new Car("Z");
      Car c2 =  new Car("A");
      Car c3 =  new Car("C");
      Car c4 =  new Car("B");
      List<Car> list = new ArrayList<>();
      list.add(c1);
      list.add(c2);
      list.add(c3);
      list.add(c4);
    
      Collections.sort(list);
      System.out.println(list);
    
  2. Utilisation de l'interface du comparateur: Pour supprimer l'inconvénient du Comparateur, le Comparateur vient à la rescousse. Dans comparateur, vous allez créer une nouvelle classe appelée et l'implémenter avec l'interface Comparateur. Vous devrez remplacer la méthode compare du comparateur qui prend deux arguments qui sont les objets que vous souhaitez comparer. Comment cela aide, vous pouvez avoir plusieurs comparateurs en fonction du besoin et vous avez juste besoin de passer le comparateur au Collections.sort méthode as et argument qui le triera automatiquement. Ci-dessous est un exemple pour la même classe. Ici, vous n'avez pas besoin d'implémenter l'imple,

    public class Car2
    {
        private String regNo;
    
        public Car2(String regNo){
            super();
            this.regNo = regNo;
        }
    
        public String getRegNo(){
            return regNo;
        }
    
    
        public void setRegNo(String regNo){
            this.regNo = regNo;
        }
    }
    

    Classe de comparaison

    public class CarComparator implements Comparator<Car2>
    {
        @Override
        public int compare(Car2 o1, Car2 o2)
        {
            Car2 c1 = (Car2) o1;
            Car2 c2 = (Car2) o2;
    
            //TODO check for nulls
            if(c1.getRegNo().equals(c2.getRegNo())){
                return 0;  
            }else if(c1.getRegNo().compareTo(c2.getRegNo()) > 0){
                return 1; 
            }else{
                return -1;  
            }
        }  
    }
    

    Test

    Car2 c1 =  new Car2("Z");
    Car2 c2 =  new Car2("A");
    Car2 c3 =  new Car2("C");
    Car2 c4 =  new Car2("B");
    List<Car2> list = new ArrayList<>();
    list.add(c1);
    list.add(c2);
    list.add(c3);
    list.add(c4);
    
        Collections.sort(list,new CarComparator());
        System.out.println(list);
    

, Vous pouvez trouver plus d'informations ici:

1.Comparable 2.Comparateur de

 0
Author: utkarsh31, 2017-08-02 06:54:38
    public Collection<ICar> sortedByRegistrationNumber(List<ICar> cars) {
       return Collections.sort(cars, new Comparator<ICar>() {
        @Override
        public int compare(ICar o1, ICar o2) {
            return o1.getRegistrationNumber().compareTo(o2.getRegistrationNumber())
        }
    });
   }

OU

public Collection<ICar> sortedByRegistrationNumber() {
   return Collections.sort(this.cars, new Comparator<ICar>() {
    @Override
    public int compare(ICar o1, ICar o2) {
        return o1.getRegistrationNumber().compareTo(o2.getRegistrationNumber())
    }
});
}
 0
Author: Pratik Adhau, 2017-08-02 07:13:56