Avatar billede trp79 Nybegynder
25. november 2005 - 14:01 Der er 10 kommentarer og
1 løsning

Gemme grupper af postnumre og lave opslag ud fra enkelt postnr.

Hejsa
Jeg har nogle postnumre, der hver især er knyttet til et områdenr.
Det er således at fx postnumrene 1000-1099 er knyttet til områdenr. 1, 1100-1299 til områdenr 2 osv.

Hvordan gemmer(i ram'en) jeg smartest disse postnr i grupper, således at jeg får et hurtigt opslag hvis jeg fx vil finde område nr for postnr 1200.

Mvh
Torben
Avatar billede arne_v Ekspert
25. november 2005 - 14:06 #1
HashMap
Avatar billede mikkelbm Nybegynder
25. november 2005 - 14:06 #2
Du kunne lave et objekt som indeholder disse postnumre og områdenummer. Putte det i en Hashmap med områdenummer som key.
Avatar billede trp79 Nybegynder
25. november 2005 - 14:19 #3
Ja har også tænkt på hashmap.
Men i tænker så:
    public static int getOmraade(int postnr){
        if(omraadeSat)
            hm.get(????);
        else{
            setOmraade();
            hm.get(????);
        }

    }
    private static void setOmraade(){
        omraadeSat = true;
        hm.put(new Integer(1099), new Integer(1));
        hm.put(new Integer(1299), new Integer(2));
        hm.put(new Integer(1300), new Integer(3));
        hm.put(new Integer(1301), new Integer(2));
        hm.put(new Integer(1399), new Integer(3));
    }

men jeg er ikke lige med på hvordan jeg slår fx postnr 1350 op.
Det er vel postnr som skal være key, eftersom det er områdenummeret jeg skal have returneret...
Avatar billede arne_v Ekspert
25. november 2005 - 14:24 #4
((Integer)hm.get(new Integer(1299))).intValue()

vil give dig 2

[og koden er en halv million gange kønnere i Java 1.5 med generics og auto
boxing og unboxing]
Avatar billede trp79 Nybegynder
25. november 2005 - 14:27 #5
Ja det kan jeg godt se, men nu hvor det er delt op i grupper, så er postnr 1350 vel ikke lige sådan at hive ud - den indgår i gruppen 1302-1399 i ovenstående.

Der er jeg måske nød til at smide et objekt ind som understående og lave sammenligning ud fra det?
public class OmraadeGruppeBil {
    private int fraPostnr;
    private int tilPostnr;
    private int omraadenr;

    public OmraadeGruppe(){

    }
    public OmraadeGruppeBil(int fraPostnr, int tilPostnr, int omraadenr){

    }
   
    public void setFraPostNr(int fraPostnr ){
        this.fraPostnr=fraPostnr;
    }
    public int getFraPostNr(){
        return this.fraPostnr;
    }
    .....
}
Avatar billede trp79 Nybegynder
25. november 2005 - 14:48 #6
hmm det hjælpe vist ikke med sådan et objekt. Jeg kan ikke lige se hvordan jeg skal løse problemet med hashmap. Hvad siger i?
Avatar billede trp79 Nybegynder
25. november 2005 - 14:49 #7
(det afgørende er hastighed for opslagene)
Avatar billede arne_v Ekspert
25. november 2005 - 14:50 #8
vi forestillede os en entry per postnummer ...
Avatar billede arne_v Ekspert
25. november 2005 - 14:51 #9
hvis du vil gemme range så skal du have en sorteret liste og lave binær søgning i
Avatar billede trp79 Nybegynder
25. november 2005 - 14:53 #10
ja, men hvis det nu skal være i grupper, så er det måske smartes at smide OmraadeGruppeBil objekterne i et array og så gennemløbe.

Jeg vil gerne have det i gruppe, da et område som regel dækker et stort område af postnumre, og da disse grupper ændre sig fra tid til anden og skal vedligeholdes manuelt.
Avatar billede trp79 Nybegynder
25. november 2005 - 16:45 #11
Løsningen blev istedet, at dataene(i gruppeobjekter) blev opbevaret i et array og arrayet bliver så søgt igennem når der skal bruges et områdenr..
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