9
votes

Trier la carte Par clés avec Ignorecase?

Eh bien, j'ai testé Treemap, mais cela ne prend pas en compte Ignorecase sur la comparaison des chaînes. Je dois commander de l'affaire lexicographiquement et ignorer. Y a-t-il une autre manière?

Merci, cela fonctionne (Treemap (comparateur C)). Cependant, j'ai une autre question: xxx

Comment puis-je universaliser le comparateur pour travailler avec différents objets? en supposant que tous ont la méthode getid ().

merci, Martin


3 commentaires

Martin, ce n'est pas une bonne idée de changer complètement la question. L'utilisateur suivant avec le privilège de le faire (peut-être) devrait le revenir à son état précédent. Il suffit de poster une nouvelle question!


+1, d'accord, lorsque quelqu'un vous donne une réponse à votre question, vous devez accepter la réponse et passer à une nouvelle question si on se produit.


Il semblerait que la question ait été "renvoyée" à nouveau, la question ne correspond plus à aucune des réponses.


7 Réponses :


1
votes

Fournissez-lui un comparateur qui compare les cordons ignorés.

Treemap (comparateur C)


0 commentaires

0
votes

Si vous aviez une liste, je dirais essayer collections.sort () avec un comparateur. Vous devrez peut-être rouler votre propre comparateur qui utilise string.equsignorecase () au lieu d'égaux ().

public TreeMap(Comparator<? super K> comparator)


0 commentaires

8
votes

Le meilleur moyen serait d'utiliser un collateur. Un collateur est une classe intégrée, qui implémente également comparable, et vous pouvez donc l'utiliser pour votre Treemap.

avec un collateur, vous pouvez également contrôler la force de la comparaison, par exemple, si vous voulez être accentué. également insensible. xxx


0 commentaires

0
votes

Oui, ce que vous voulez, c'est utiliser le constructeur TreeMap qui prend un comparateur. Faire un comparateur qui utilise une comparète -ignorecase.


0 commentaires

0
votes

Je soupçonne que vous devriez construire votre Treemap avec un comparateur personnalisé. xxx


0 commentaires

37
votes

Vous voulez utiliser un comparateur dans le TREEMAP code> constructeur . En particulier, regardez string.case_insenitive_order Code> .

TreeMap map = new TreeMap(String.CASE_INSENSITIVE_ORDER);


1 commentaires

Rappelez-vous - si vous êtes un programmeur anglais et que vous contrôlez les clés que vous ne devez pas vous inquiéter de la locale, car les comparaisons ne sont pas faites sur les valeurs, elles sont être fait sur les clés ;-)



1
votes

Comment puis-je universaliser le comparateur travailler avec des objets différents? en supposant que tous ont la méthode getid ().

Vous devriez pouvoir utiliser un BeanComparator . < / p>


1 commentaires

J'ai recommandé que la question soit revenue à la question initiale et à une nouvelle question postée à la place; Si et quand cela se produit, cette réponse doit probablement être supprimée aussi.