2011-07-06 2 views
0

J'ai un hashmap avec 8 champs. Parmi ces 2 sont id et idseq. Les deux sont entiers. Il peut y avoir plus d'un idseq similaire, mais pas pour un id. Est-ce que cette carte de hasp peut être triée sur la base de ces 2?Tri d'une HashMap avec 2 champs

Répondre

0

Nous pouvons utiliser une carte Arbre comme ceci:

TreeMap<Integer,DRG> sortedMap = new TreeMap<Integer,DRG>(); 

sortedMap.putAll(hashmap); 

Treemap prendra soin du reste. L'ordre des valeurs représentées dans la base de données peut être restauré à l'aide d'une arborescence.

1

Créez une clé contenant ces deux valeurs entières et utilisez-la comme clé pour votre carte. Faites cette clé Comparable et implémentez votre logique de tri là.

Quelque chose comme ceci:

class MyCustomKey implements Comparable<MyCustomKey> { 
    final int id; 
    final int idSeq; 

    public MyCustomKey(int id, int idSeq) { 
     this.id = id; 
     this.idSeq = idSeq; 
    } 

    public int getId() { 
     return this.id; 
    } 

    public int getIdSeq() { 
     return this.idSeq; 
    } 

    @Override 
    public int compareTo(MyCustomKey o) { 
     // your compare logic goes here 
     return -1; 
    } 
} 

Vous pouvez alors l'utiliser comme la clé de votre carte, de préférence un TreeMap si elle doit être triée.

0

Utilisez une TreeMap à la place avec Comparator personnalisé que vous devez passer à son constructeur.