Avatar billede zhy Nybegynder
30. juli 2002 - 20:31 Der er 10 kommentarer og
1 løsning

Udskrivning af HashMap værdier

Hej
Jeg er ved at lave et bogarkiv.
I et bog objekt har jeg værdierne navn, forfatter, isbn, udgivelesesår og sideantal
Jeg vil gerne lave en metode så når man har indtastet et isbn nummer skal der vises resten af værdierne på skærmen. hvordan skal jeg gribe det an ?
Zhy
Avatar billede jakoba Nybegynder
30. juli 2002 - 20:36 #1
Du kunne jo lagre dine data i en sql-database. De har inbygget interface til den slags udtræk.
Avatar billede bearhugx Nybegynder
30. juli 2002 - 20:38 #2
Du laver et bogobjekt som har bogens attributter

og når du så gemmer et objekt i  hashmappen, så gem det på følgende måde
bogarkiv.put( bog.getISBN(), bog)...

hvor getISBN retunerer en String

Hvis ISBN f.eks. er "1234-433-7-2" , så kan du bruge
Bog bog = (Bog)bogarkiv.get("1234-433-7-2"); til at hente bogen igen...

/Søren
Avatar billede zhy Nybegynder
30. juli 2002 - 20:39 #3
vil gerne undgå databaser :) har vi ikke lært om endnu
Avatar billede zhy Nybegynder
30. juli 2002 - 20:41 #4
takker... ser lige om jeg kan få det til at virke.... eller kan det godt være at jeg lige spørger igen....
Avatar billede bearhugx Nybegynder
30. juli 2002 - 20:44 #5
OK :-)
Avatar billede zhy Nybegynder
30. juli 2002 - 20:45 #6
lige en ting til.... som egentlig var spørgsmålet :0) hvordan udskriver jeg bogens værdier ? altså selve udskrivningen på skærmen, kan jeg bare bruge en masse System.out.println() ? f. eks. System.out.println(forfatter);
Avatar billede r9 Nybegynder
30. juli 2002 - 20:51 #7
måske sådan:

import java.util.Vector;

public class Bog {

    private String udgivelesesaar="";
    private String isbn ="";
    private String navn ="";
    private String sideantal="";
    private String forfatter="";

    public String getUdgivelesesaar() {
        return udgivelesesaar;
    }

    public void setUdgivelesesaar(String udgivelesesaar) {
        this.udgivelesesaar = udgivelesesaar;
    }

    public String getSideantal() {
        return sideantal;
    }

    public void setSideantal(String sideantal) {
        this.sideantal = sideantal;
    }

    public String getNavn() {
        return navn;
    }

    public void setNavn(String navn) {
        this.navn = navn;
    }

    public String getIsbn() {
        return isbn;
    }

    public void setIsbn(String isbn) {
        this.isbn = isbn;
    }

    public String getForfatter() {
        return forfatter;
    }

    public void setForfatter(String forfatter) {
        this.forfatter = forfatter;
    }


 

  //test
    public static void main(String[] args) {

        Vector v = new Vector();

        Bog bog = new Bog();
        bog.setForfatter("mig");
        bog.setIsbn("141516551");
        bog.setNavn("java");
        bog.setSideantal("559");
        bog.setUdgivelesesaar("2002");

        Bog bog2 = new Bog();
        bog2.setForfatter("dig");
        bog2.setIsbn("141515551");
        bog2.setNavn("java2");
        bog2.setSideantal("665");
        bog2.setUdgivelesesaar("2000");

        v.add(bog);
        v.add(bog2);

        //selv søgningen
        for (int i = 0; i < v.size(); i++) {
            Bog b = (Bog)v.elementAt(i);
            if (b.getIsbn().equals("141516551")) {
                System.out.println("navn :" + b.getNavn());
                System.out.println("isbn :" + b.getIsbn());
                System.out.println("forfatter :" + b.getForfatter());
                System.out.println("sideantal :" + b.getSideantal());
                System.out.println("udgivelseår :" + b.getUdgivelesesaar());
            }
        }

    }



}



Ved ikke om det kan bruges...
Avatar billede bearhugx Nybegynder
30. juli 2002 - 21:31 #8
I stedet for at bruge en Vector  - som ikke er særligt brugbart i denne
sammenhæng, så gør følgende

----
FIL : BogArkiv.java

import java.util.*;

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

    // opret og gem nogle bøger (2 stk.)
    Bog bog = new Bog("Java for begyndere", "Søren Munk Skrøder", "1243-43-44");
    arkiv.put(bog.getISBN(), bog);
    bog = new Bog("Java - den videre rejse", "Søren Munk Skrøder", "1243-43-45");
    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 bearhugx Nybegynder
30. juli 2002 - 21:34 #9
r9 >> Jeg vil kraftigt fraråde, at lave søgning på den måde, som dit indlæg foreslår --- Hvis du har 100.000 bøger/materialer i biblioteket (ikke usædvaligt for et mellemstort bibliotek), vil der gennemsnitligt skulle gennemløbes 50.000 materialer, før den rette bliver fundet... -- Det tager tid!

/Søren
Avatar billede r9 Nybegynder
30. juli 2002 - 21:39 #10
bearhugx :
korrekt

det var også bare ment som lidt inspiration
Avatar billede r9 Nybegynder
30. juli 2002 - 21:56 #11
bearhugx:

Jeg har lige forsøgt at oprette 100000 af dine bogobjekter.
Det tager ca. 50 ms. at finde en bestemt med et HashMap.


Samme eksempel med en Vector tager det ca. 250 ms.
Så noget har det da at sige.
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