2016-10-18 7 views
-1

としてリストとマップ内の単語を検索:javaの - 私は.txtの持っている価値

  1. ライン:X、ミュンヘン、C、E、
  2. Fライン:Y、ベルリン、広告、UFを
  3. ライン:のZ、ハンブルク、BF

は、すべての単語が '' で分離されています。

このtxtの1行の最初の2文字列はコンストラクタに送られます。 3.以降の文字列はリストに移動します。 たとえば、キーは次のとおりです。a b(コンストラクタの形式) 値は、c、e、fを持つArrayListです。だから3要素。

String filePath = "....txt"; 

     List<String> itemlist = new ArrayList<String>(); 
     HashMap<Corporation, List> corp = new HashMap<Corporation, List>(); 

     String line; 
     BufferedReader reader = new BufferedReader(new FileReader(filePath)); 
     while ((line = reader.readLine()) != null) { 
      String[] parts = line.split(",", 3); 
      if (parts.length >= 3) { 
       String name = parts[0]; // key=name, value= address 
       String address = parts[1]; 
       String info = parts[2]; 
       itemlist = new ArrayList<String>(Arrays.asList(info.split(","))); 
       Corporation cor = new Corporation(name, address); 
       corp.put(cor, itemlist); 
      } 
     } 

すべて正常に動作します。 これで、MapのArrayListの1つで文字列を検索する必要があります。 たとえば、文字列 "bf"を検索し、文字列を見つけたことと、地図の右のキーでどこにあるのかを表示します。例えば ​​"bf"とすると、 "bf found in" z、Hamburg ""と表示されます。

for (Entry<Corporation, List> entry : corp.entrySet()) { 
      if (entry.getValue().equals("bf")) { 
       System.out.println("Found at " +); 
       System.out.println(entry.getKey()); 
      } else { 
       System.out.println("String not found."); 
      } 
     } 

私のコードのこの部分は、私が望むように動作しません。どうすればいいのですか?

+3

出力は/大丈夫 – Treycos

答えて

1

if (entry.getValue().equals("bf"))は、ListStringを比較しています。

このif (entry.getValue().contains("bf"))

+0

を期待しますが、私の出力はまだ「動作しない」を定義してください「の文字列が見つかりません。」 – HankMoody

+0

ファイルを読み込んだ後にマップ値を表示することはできますか? – djointster

+0

with System.out.println(corp.entrySet());私は出力を得る: – HankMoody

0
​​3210

がString対リストを比較してみます。それは決して真実ではありません。

あなた最も可能性の高いwantetこの:

entry.getValue().contains("bf") 
関連する問題