2016-05-30 4 views
0
import java.util.Scanner; 
import java.util.Map; 
import java.util.HashMap; 

class Solution{ 
    public static void main(String []argh){ 
     Map<String,String> phoneBook =new HashMap<String,String>(); 
     Scanner in = new Scanner(System.in); 
     int n = in.nextInt(); 
     for(int i = 0; i < n; i++){ 
      String name = in.next(); 
      String phone = in.next(); 
      phoneBook.put(name,phone); 
      } 
      System.out.println("now search"); 
     while(in.hasNext()){ 
      String s = in.next(); 
      for(Map.Entry<String,String> e : phoneBook.entrySet()) 
     { 
      e.getKey(); 
      if(name1==s) 
      { 
       System.out.println(e.getKey()+" : "+e.getValue()); 
      } 
      else 
      { 
      System.out.println("Not found"); 
      } 
     } 
      } 
     in.close(); 
    * 

    } 
}* 

私がしようとしているのは、辞書にいくつかの値を入力し、辞書に特定の文字列があるかどうかを検索することです。タイムアウトのために終了しました。それを行うためのより良い方法は?辞書検索のタイムアウト...何をするか

+0

は、なぜあなたは '取得()'の呼び出しは、キーで直接検索を行うことができます全体 'Map'を、ループしていますか?それは*マップの目的です*あなたは知っています。 ---戻り値を使用しないときに、 'e.getKey()'は何をすると思いますか? – Andreas

答えて

1

ハッシュマップなので、キーを1つずつ反復するのではなくその機能を使用します。

試してみてください。

while(in.hasNext()){ 
       String s = in.next(); 

       String value = phonebook.get(s); 
       if(value!=null) 
       { 
        System.out.println(s+" : "+value); 
       } 
       else 
       { 
       System.out.println("Not found"); 
       } 
      } 
+0

電話帳は 'null '値を持つことができないので、' contains() '+' get() 'を使ってダブルルックアップをしないでください。単に 'get()'を実行し、 'null'の戻り値をチェックしてください。 – Andreas

+0

合意..指摘してくれてありがとう。 – Sanjeev