2012-04-26 10 views
0

は、generateMapという文字列をキーとし、 。 今、ランダムなテキストを印刷したいと思います。 (文字列のストレージが問題ではありません)キー=文字列と値=次の文字のLinkedHashMapに基づいてテキストをランダムに生成

Example: 
String = "Lorem ipsum Loram ipar" 

Key----------Value 
After Lor -> e,a 
After ore -> m 
After rem -> " " 
After em -> i 
After m i -> p,p 
After ip -> s,a 

ランダムテキストは、ランダムに選択された次の文字は、次の「窓」のように選ばれた、とされて生成する必要があります。私は新しいテキストをどのように生成するのか分かりません。おそらくあなたは私にヒントを与えることができますか? これは私がこれまでに得たものである:

for (Entry<String, ArrayList<String>> e : generateMap.entrySet()) { 
      //store the values into an ArrayList   
      ArrayList<String> valuesList = new ArrayList<String>(e.getValue()); 
      // randomly choose on of the values 
      int random = (int) (Math.random() * (valuesList.size())); 
      String randomWort = valuesList.get(random); 
      String print = e.getKey() + randomWort; 
} 
System.out.println(print); 

答えて

2

は、私はあなたのコードはOKだと思います。便利な方法で、GuavaクラスLinkedHashMultimapを使用する。

小さな改善点:ループ内にArrayListを作成する必要はありません。e.getValue()はすでにArrayListです。

+0

@声盛Shengyuan Lu - 私はGuavaのことを聞いたことがありますが、まだこのライブラリを使用することはできません。 – toefftoefftoeff

+0

あなたの改善に感謝します。 しかし、それはこのようなSTH、ない単一のテキストを出力しますが、私は、テキストのdoesntリピートワード(上記descripted)持っている必要があります: 'ハウサ AUSA H 米国ハ sAのハウ Aハウス HausB HausB' – toefftoefftoeff

+0

についての繰り返しなくても、セットが私の心に入った。あなたはそれを行うためにHashSetを試すことができます。 –