Announcement

Collapse
No announcement yet.

Problem mit Hashtable

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit Hashtable

    Ich hab eine Hashtable erstellt, mit der Vorkommen von Wörtern in Texten gezählt werden sollen. Problematisch ist nur das ich immer die gleichen Werte auslesen kann.

    PHP Code:
    Set<Map.Entry<ArrayList<String>, DenseBag<String>>> k=h.entrySet();
    Iterator<Map.Entry<ArrayList<String>, DenseBag<String>>> test=k.iterator(); 
    while (
    test.hasNext())
            {
                
    System.out.println(test.next());
            } 
    Ausgabe ist unerklärlicherweise folgendes:

    .......
    [the, cake]={{key=2}}
    [the, cake]={{off=1}}
    [the, cake]={{it=1}}
    [the, cake]={{except=1, which=1, or=1, in=1}}
    [the, cake]={{girl=1}}
    [the, cake]={{so=1}}
    .......

    Die Werte rechts stimmen, nur links müsste jedesmal ein anderer Key stehen. Wie kann das sein, ein Key darf doch eigentlich nur einmal existieren.
    Zuletzt editiert von recon; 24.04.2008, 19:31.

  • #2
    Hallo,

    wie sieht die Datenstruktur überhaupt aus ? Aber zum Vergleich das entsprechende Kapitel des Openbook
    MfG
    Cheat-Sheets for Developers / Programming Quotes

    Comment


    • #3
      Originally posted by Markus Lahr View Post
      Hallo,

      wie sieht die Datenstruktur überhaupt aus ? Aber zum Vergleich das entsprechende Kapitel des Openbook

      PHP Code:

      //Auszug:

      public Hashtable<ArrayList<String>,DenseBag<java.lang.String>> h=new Hashtable<ArrayList<String>,DenseBag<java.lang.String>>();

      //Zum Füllen der Hastable
      //o: Vorgabe der Größe der ArrayList
      //DenseBag zählt automatisch die Anzahl der Vorkommen

      void train(Iterator<Stringwords) {
              
      ArrayList<Strings=new ArrayList<String>();
              
      DenseBag<java.lang.Stringds;
              for (
      int i=0;i<&& words.hasNext();i++) {
               
      s.add(words.next());
              }
          
              
      System.out.print(s);
              
              while (
      words.hasNext()) {
                  if (
      h.containsKey(s)) {
                      
      ds=h.get(s);
                  }
                  else {
                      
      ds=new DenseBagImpl<java.lang.String>();
                      
      anzahl++;
                  }
                  
      String word=words.next();
                  
      ds.add(word);
                  
      h.put(sds);
                  
      s.remove(0);
                  
      s.add(word);
                  
              }


      Comment

      Working...
      X