Avatar billede tlunde Nybegynder
21. juli 2003 - 21:13 Der er 8 kommentarer og
2 løsninger

Lav udtræk fra HashMap

Hejsa,
Jeg er ved at lave et program, der bruger HashMap som datastruktur. Og jeg har fået lavet et objekt som er gemt rigtigt (tror jeg :))

Jeg vil nu gerne tjekke om dette er gemt i HaspMap'en, ved at lave en metode der trækker informationerne ud, og udskriver dem på skærmen. Hvordan gør jeg det??

Det jeg havde tænkt mig, var at få printet de keys ud der er gemt, og så derudfra vælge en bestemt key, hvor man så derefter får resten af oplysningerne fra det bestemte objekt.

Er det den rigtige måde at gøre det på, eller skal det gøres på en anderledes måde?
Avatar billede arne_v Ekspert
21. juli 2003 - 21:21 #1
Det er nemt at få et enkelt objekt ud. Bare kald get med den rigtige key.
Og så skal du naturligvis have printet det objekt ud, men det er jo uafhængigt
af HashMap.

For at hive alle elementer i en HashMap er der flere metoder. Jeg plejer at
bruge keyset og iterator til at hente alle keys ud med i en løkke.
Avatar billede arne_v Ekspert
21. juli 2003 - 21:24 #2
Den her lille stump illusterer lidt:

import java.util.HashMap;
import java.util.Iterator;

public class HM {
    public static void main(String[] args) {
        HashMap hm = new HashMap();
        hm.put("a","linie a");
        hm.put("b","linie b");
        hm.put("c","linie c");
        System.out.println(hm);
        Iterator it = hm.keySet().iterator();
        while(it.hasNext()) {
            String key = (String)it.next();
            System.out.println((String)hm.get(key));
        }
    }
}
Avatar billede tlunde Nybegynder
21. juli 2003 - 21:30 #3
Jeg prøver lige og vender tilbage senere.

mange tak indtil videre...
Avatar billede magoo20000 Nybegynder
21. juli 2003 - 21:50 #4
Et eksempel man kan relatere til skolen/hverdagen:


import java.util.*;

class BogArkiv {
  public static void main(String[] args) {
    HashMap arkiv = new HashMap();

    Bog bog = new Bog("Java for begyndere", "Peter Bell", "9993-43-44");
    arkiv.put(bog.getISBN(), bog);
    bog = new Bog("Java - den videre rejse", "Aben Charlie", "1245-66-22");
    arkiv.put(bog.getISBN(), bog);
   
    // hent en bog frem, via ISBN nummer
    Bog hentetBog = (Bog)arkiv.get("1243-43-44");

    // udskriv bogens data til Sys.Out - Det kunne også være til en eller
    // anden GUI
    System.out.println(" TITEL    : " + hentetBog.getTitel());
    System.out.println(" FORFATTER : " + hentetBog.getForfatter());
    System.out.println(" ISBN      : " + hentetBog.getISBN());   
  }
}


FIL : Bog.java

class Bog {
  private String titel;
  private String forfatter;
  private String isbn;

  public Bog(String _titel, String _forfatter, String _isbn) {
    this.titel = _titel;
    this.forfatter = _forfatter;
    this.isbn = _isbn;
  }

  public String getTitel() {
return titel; }
  public String getForfatter() {
return forfatter;
}
  public String getISBN() {
return isbn;
}
}
Avatar billede magoo20000 Nybegynder
21. juli 2003 - 21:51 #5
HashMap arkiv = new HashMap(); burde være Map arkiv = new HashMap();

Man skriver normalt interfacet på venstre side af lighedstegnet - det er pænere.
Avatar billede arne_v Ekspert
21. juli 2003 - 22:01 #6
Det siger man ja.

Det betyder reelt kun noget når det er noget der exposes til
andre klasser.

Om man skal rette en new eller man skal lave en søg og erstat i en
fil er ikke den store forskel.

Problemer er hvis man skal ud og rette i 500 filer fordi man ændrer
i et interface (interface brugt i bred forstand ikke nødvedendigvis i
Java language betydning).
Avatar billede tlunde Nybegynder
21. juli 2003 - 22:03 #7
Hvis vores key er et navn, kan man så godt gemme flere objekter under samme key?

Hvis vi f.eks. har en telefonbog. Hvis personen hedder anders og hans navn er key. Kan man så godt gemme f.eks. mobil, arbejde og hjemme nummer som 3 forskellige objekter under samme key, eller er der en anden måde det skal gøre på?
Avatar billede arne_v Ekspert
21. juli 2003 - 22:08 #8
Nej.

Kun et objekt under en key.

Du kan løse problemet på 2 måder:

1)  Have 3 hash maps - en for hjemme, en for arbejde, en for mobil

2)  Lave et objekt som indeholder alle 3 og gemme det objekt i hash mappen
Avatar billede arne_v Ekspert
31. juli 2003 - 08:14 #9
tlunde>

Kommet videre ?
Avatar billede arne_v Ekspert
10. august 2003 - 18:20 #10
?
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