2012-08-09 2 views
-1

Je reçoisComment trier une liste <Carte <String, Object >> en java

List<Map<String,Object>> listMap = [ 
    {employee=17, fromdate=2010-08-01 00:00:00.0, full_inc=25572.0000}, 
    {employee=17, fromdate=2010-09-01 00:00:00.0, full_inc=28347.0000}, 
    {employee=17, fromdate=2010-10-01 00:00:00.0, full_inc=37471.0000}, 
    {employee=17, fromdate=2011-02-01 00:00:00.0, full_inc=47033.0000}, 
    {employee=17, fromdate=2011-07-01 00:00:00.0, full_inc=50592.0000} 
    ] 

quelqu'un peut me aider Comment trier cette liste de carte basée sur full_inc de grande quantité à faible quantité en Java

+0

Je vais jeter que vous voudrez peut-être utiliser un SortedMap quelconque , mais comment trier la collection autour de moi est au-delà de moi – MadProgrammer

Répondre

2

Vous pouvez utiliser un comparateur personnalisé, mais vous avez besoin de vos valeurs (actuellement Object) pour implémenter Comparable. Sur la base de la déclaration actuelle de votre liste, vous ne pouvez pas le faire (comment comparez-vous deux objets au hasard?):

List<Map<String,Comparable>> listMap = ... 
Collections.sort(listMap, new Comparator<Map<String, Comparable>>() { 

    @Override 
    public int compare(Map<String, Comparable> m1, Map<String, Comparable> m2) { 
     return m2.get("full_inc").compareTo(m1.get("full_inc")); //descending 
    } 
}); 

Note: vous devez ajouter une vérification d'erreur.

0

Vous pouvez utiliser Collections.sort() avec votre propre comparateur.

1

Je

  • Faites votre objet cartes d'une classe personnalisée.
  • Faire mettre en œuvre votre classe personnalisée Comparable
  • Utilisez Collections.sort()
1

Solution 1 est de mettre toutes les entrées que vous souhaitez trier dans un TreeMap<K,V> (TreeMap doc) où K vous est le critère sur lequel vous triez (ici full_inc) et V est ce que vous voulez trier. TreeMap.entrySet sera ensuite réitéré en suivant l'ordre compare() de votre K.

La solution 2 consiste à créer votre propre classe Comparable en utilisant full_inc pour comparer avec des objets de la même classe et utiliser Collections.sort avec elle.

Solution 3 est presque identique à 2, en utilisant Collections.sort avec un comparateur comparant deux instances de votre classe personnalisée en fonction de leur getFullInc()

Questions connexes