165 votes

java linkedhashmap obtenir la première ou la dernière entrée

Je l'ai utilisé, LinkedHashMap parce qu'il est important de l'ordre dans lequel les touches sont entrés dans la carte.

Mais maintenant, je veux obtenir la valeur de la clé en premier lieu (la première entrée de l'entrée). Devrait-il y avoir une méthode first() ou quelque chose comme ça?

Dois-je avoir un itérateur pour obtenir juste la première entrée de clé? C'est pourquoi j'ai utilisé LinkedHashMap!

Merci d'avance et désolé pour mon orthographe et de grammaire.

185voto

skaffman Points 197885

La sémantique de l' LinkedHashMap sont encore ceux d'une Carte, plutôt que celle d'un LinkedList. Il conserve l'ordre d'insertion, oui, mais c'est un détail d'implémentation, plutôt que d'un aspect de son interface.

Le moyen le plus rapide pour obtenir la "première" à l'entrée est toujours entrySet().iterator().next(). L'obtention de la "dernière" entrée entraînera une itération sur l'ensemble de l'entrée de la valeur.

edit: Cependant, si vous êtes prêt à aller au-delà de la JavaSE API, Apache Commons Collections a sa propre LinkedMap mise en œuvre, qui a des méthodes comme l' firstKey et lastKey, qui font ce que vous cherchez. L'interface est nettement plus riche. Communes de Collecte de ne pas utiliser des génériques, mais vous pouvez obtenir un générique-isé version ici.

4voto

user2127649 Points 16

Peut-être quelque chose comme ça:

 LinkedHashMap<Integer, String> myMap;

public String getFirstKey() {
  String out = null;
  for (int key : myMap.keySet()) {
    out = myMap.get(key);
    break;
  }
  return out;
}

public String getLastKey() {
  String out = null;
  for (int key : myMap.keySet()) {
    out = myMap.get(key);
  }
  return out;
}
 

1voto

rai.skumar Points 3187

Bien que linkedHashMap ne fournisse aucune méthode pour obtenir le premier, le dernier ou un objet spécifique.

Mais c'est assez trivial pour obtenir:

  • Map orderMap = new LinkedHashMap ();
    Définissez al = orderMap.keySet ();

utilise maintenant iterator sur al object; vous pouvez obtenir n'importe quel objet.

1voto

Doua Beri Points 984

Je recommanderais d'utiliser ConcurrentSkipListMap qui a les méthodes firstKey() et lastKey()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X