2016-04-20 5 views
0

Ich möchte meine eigene Hash-Tabelle mit Verkettung und verkettete Liste implementieren, aber ich habe es schwer herauszufinden, wie Sie die Implementierung in der Hauptmethode verwenden. Ich muss eine kommagetrennte Wertedatei mit Daten lesen und die Namen als Schlüssel und die zwei Gleitkommawerte als Wert speichern. Ich weiß, dass ich objektorientierte Programmierung verwenden muss, aber es fällt mir schwer, mit meiner Implementierung auf meine Daten zuzugreifen.Hash-Tabelle mit verketteten Listenimplementierung und Speichern von Textdatei

Hier ist mein Code: public class LinkedListHash {

 String key; 
    String value; 
    LinkedListHash next; 
    public LinkedListHash(){ 
    } 
    LinkedListHash(String key, String value){ 
     this.key = key; 
     this.value = value; 
     this.next = null; 
    } 
    public String getValue(){ 
     return value; 
    } 
    public void setValue(String value){ 
     this.value = value; 
    } 
    public String getKey(){ 
     return key; 
    } 
    public LinkedListHash getNext(){ 
     return next; 
    } 
    public void setNext(LinkedListHash next){ 
     this.next = next; 
    } 

    class Hashtable { 
    int size = 0; 
    LinkedListHash[] table; 
    Hashtable(){ 
     table = new LinkedListHash[size]; 
     for (int i = 0; i < size; i++){ 
      table[i] = null; 
     } 
    } 
    public String get(String key){ 
     int hash = key.hashCode(); 
     if (table[hash] == null){ 
      return null; 
     } 
     else { 
      LinkedListHash input = table[hash]; 
      while (input != null && input.getKey() != key){ 
       input = input.getNext(); 
      } 
      if (input == null){ 
       return null; 
      } 
      else { 
       return input.getValue(); 
      } 
     } 

    } 
    public void put(String key, String value){ 
     int hash = key.hashCode(); 
     if (table[hash] == null){ 
      table[hash] = new LinkedListHash(key, value); 
     } 
     else { 
      LinkedListHash input = table[hash]; 
      while (input.getNext() != null && input.getKey() != key){ 
       input = input.getNext(); 
      } 
      if (input.getKey() == key){ 
       input.setValue(value); 
      } 
      else { 
       input.setNext(new LinkedListHash(key, value)); 
      } 
     } 
    } 

    } 
} 

public static void main(String[] args) throws FileNotFoundException{ 

    Hashtable<String, String> tbl = new Hashtable<String, String>(); 

    String path = args[0]; 

    if(args.length < 1) { 
      System.out.println("Error, usage: java ClassName inputfile"); 
     System.exit(1); 
     } 

     Scanner reader = new Scanner(new FileInputStream(args[0])); 

     while((path = reader.nextLine()) != null){ 
      String parts[] = path.split("\t"); 

      tbl.put(parts[0], parts[1]); 
     } reader.close(); 

} } 

Jede Art und Weise ich meinen Code hilfreich wäre verbessern könnte. Denken Sie daran, ich bin kein sehr erfahrener Programmierer, also entschuldige ich mich für irgendwelche schrecklichen Fehler.

Antwort

0

String s sollte nicht mit == oder != verglichen werden, es sei denn, Sie möchten wissen, ob es sich um dieselbe Zeichenfolge handelt, die denselben Speicherplatz belegt. Verwenden Sie stattdessen equals().

+0

Ich weiß nicht, warum ich das getan habe. Vielen Dank für Ihren Kommentar – Regza123

Verwandte Themen