2017-10-13 6 views
-8

J'essaie de trier des objets dans arrayList. Peut être comme Node et Edge. Par exemple: Je objets similaires à:Comment puis-je trier les objets dans arrayList?

object2 [B, C], Object1 [A, B], Object4 [E, F], Object3 [C, D], Object5 [F, G ], ...

Ma question est de savoir comment puis-je trier dans les groupes comme celui-ci:

Object1 [A, B], Object2 [B, C], Object3 [C, D ] = Group1 Object4 [E, F], Object5 [F, G] = Groupe2 ...

Comment puis-je le faire?

+2

Il y a littéralement des dizaines d'algorithmes de tri, et certainement mises en œuvre pour chacun dans plusieurs langues, et on ne pouvait pas trouver un seul à utiliser ou adapter à votre utilisation? Cela montre un manque flagrant de capacité ou d'effort de votre part, et ne suit pas ce que le SO vise à utiliser, c'est-à-dire répondre à des questions de codage spécifiques. – AntonH

+0

vous pouvez implémenter 'Comparable', puis remplacer la méthode' compareTo' en fonction de vos besoins, puis appeler la méthode 'Collections.sort (yourArrayList)'. Ceci est juste l'une des façons ... – assembler

+1

Possible dupliquer de [Trier ArrayList d'objets personnalisés par propriété] (https://stackoverflow.com/questions/2784514/sort-arraylist-of-custom-objects-by-property) –

Répondre

0

Utilisez Comparable et comme indiqué Comparator ci-dessous, vous pouvez également visiter https://www.journaldev.com/780/comparable-and-comparator-in-java-example pour plus de détails.

import java.util.Comparator; 

    class Employee implements Comparable<Employee> { 

     private int id; 
     private String name; 
     private int age; 
     private long salary; 

     public int getId() { 
      return id; 
     } 

     public String getName() { 
      return name; 
     } 

     public int getAge() { 
      return age; 
     } 

     public long getSalary() { 
      return salary; 
     } 

     public Employee(int id, String name, int age, int salary) { 
      this.id = id; 
      this.name = name; 
      this.age = age; 
      this.salary = salary; 
     } 

     @Override 
     public int compareTo(Employee emp) { 
      //let's sort the employee based on id in ascending order 
      //returns a negative integer, zero, or a positive integer as this employee id 
      //is less than, equal to, or greater than the specified object. 
      return (this.id - emp.id); 
     } 

     @Override 
     //this is required to print the user friendly information about the Employee 
     public String toString() { 
      return "[id=" + this.id + ", name=" + this.name + ", age=" + this.age + ", salary=" + 
        this.salary + "]"; 
     } 
} 

Default Sorting of Employees list: [[id=1, name=Pankaj, age=32, salary=50000], [id=5, name=Lisa, age=35, salary=5000], [id=10, name=Mikey, age=25, salary=10000], [id=20, name=Arun, age=29, salary=20000]]