2014-11-19 2 views
0

В следующей задаче я должен поместить имена и фамилии в хеш-таблицу. Имя - это ключ, а фамилия - значение. После этого мне нужно снова ввести имя и фамилию. После каждого ввода имени и фамилии мне нужно проверить, есть ли в хеш-таблице, что есть, и если есть равный, мне нужно напечатать что-то вроде «Существует одинаковое имя и фамилия». Я должен использовать структуру данных для хэширования, которую дал нам наш профессор, а не традиционный хэш-импорт из Java. Моя проблема в том, что я не знаю, как искать в моей таблице Hash, у меня есть метод поиска в классе CBTH, который я поставлю под своим кодом.Поиск в HashTable

public class HashLozinki { 
public static void main (String[] args) throws IOException { 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    int N = Integer.parseInt(br.readLine()); 

      CBHT<Korisnici,String> table1 = new CBHT<Korisnici,String>(26); 
    for(int i=1;i<=N;i++){ 
     String imelozinka = br.readLine(); 
     String[] pom = imelozinka.split(" "); 
        table1.insert(new Korisnici(pom[0]), new String(pom[1])); 
    } 

    System.out.println(table1); 

    for(int i=1; i<=N; i++){ 
     String korisnik = br.readLine(); 
     String[] res = korisnik.split(" "); 
     table1.search(res[0]); // Here is my problem :S don't know how to use search 
    } 

} 
} 

// The Search Method (part of CBTH class).. i don't know how to implement it 
public SLLNode<MapEntry<K,E>> search(K targetKey) { 
    // Find which if any node of this CBHT contains an entry whose key is 
    // equal 
    // to targetKey. Return a link to that node (or null if there is none). 
    int b = hash(targetKey); 
    for (SLLNode<MapEntry<K,E>> curr = buckets[b]; curr != null; curr = curr.succ) { 
     if (targetKey.equals(((MapEntry<K, E>) curr.element).key)) 
      return curr; 
    } 
    return null; 
} 

ответ

1

Класс SLLNode должен иметь метод для возвращения значения (или MapEntry).

Я нашел реализацию SLLNodehere. К сожалению, класс SLLNode не имеет общедоступных методов/полей, поэтому вы должны добавить свой класс в тот же пакет (или тот же файл). Вы можете получить стоимость по цепным звонкам:

table1.search(res[0]).element.value 
+0

Большое спасибо! ты потрясающий :) (Y) – user3075088

Смежные вопросы