Avatar billede charly Nybegynder
24. maj 2006 - 14:37 Der er 4 kommentarer og
1 løsning

manglende elementer på SortedMap.subMap

Hej,

Jeg har et lille problem omkring subMap metoden på SortedMap.

Jeg har følgende erklæring:

private SortedMap<String, Integer> map = new TreeMap<String, Integer>();

Jeg add'er nu følgende til map'en:

map.put("barbeque", 1);
map.put("båd", 1);
map.put("bord", 1);

... og vil gerne trække dem ud igen via subMap metoden, hvor parameteren 'kriterie' er 'b'.

SortedMap<String, Integer> subMap = map.subMap(kriterie, kriterie + "å");//Lidt tynd måde!

Jeg vil gerne have alle elementer ud der indeholder kriteriet 'b'. Hvordan gøres det nemmest?

/Charly
Avatar billede arne_v Ekspert
24. maj 2006 - 14:56 #1
.supMap('b', 'c') er vel det som docs anbefaler

men det giver et endnu mere saert udseende med din kriterie variabel,

dog er det nok det sikreste fordi sortering af non-ASCII bogstaver er
potentielt usikker

saa det sikreste omend ikke det nemmeste maa vaere

.subMap(kriterie, Character.toString((char)(kriterie.charAt(0) + 1)))
Avatar billede charly Nybegynder
24. maj 2006 - 15:01 #2
Det virker tak. Er det fordi at der er et problem med sortering på danske tegn?
Avatar billede arne_v Ekspert
24. maj 2006 - 15:14 #3
dit konkrete problem skyldes nok at "båd" ikke kommer foer "b" + "å"

men generelt er problemet at String compareTo bruger simpel unicode vaerdi
og at det ikke altid matcher "rigtig" alfabetisk sortering
Avatar billede charly Nybegynder
24. maj 2006 - 20:04 #4
Smid et svar. Du skal da have dine point.
Avatar billede arne_v Ekspert
24. maj 2006 - 20:06 #5
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester