2012-04-26 1 views
0

나는 generateMap이라는 문자열을 키로 포함하며 값으로 저장된이 문자열의 다음 문자의 가능한 모든 변형을 포함하고 있습니다 (LinkedHashMap) . 이제 임의의 텍스트를 인쇄하고 싶습니다.키 = 문자열 및 값 = 다음 글자의 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

내가 코드를 확인 생각합니다. 편리한 방법으로 Guava 클래스 LinkedHashMultimap을 사용합니다.

작은 개선점 : 루프에서 ArrayList를 만들 필요가 없습니다. e.getValue()은 이미 ArrayList입니다.

+0

@ 卢 声 远 Shengyuan Lu - 구아바에 대해 들었지만, 아직이 라이브러리를 사용할 수 없습니다. – toefftoefftoeff

+0

개선에 감사드립니다. 그러나이 아닌 하나의 텍스트처럼 STH를 인쇄하지만 나던 반복 단어 (위 descripted) 텍스트가 필요합니다 : '하우 사족 AUSA H 미국 하 SA 하우 하우스 HausB HausB' – toefftoefftoeff

+0

에 대해서는를 반복하지 않기 위해, 세트가 내 마음에 들어왔다. HashSet을 사용해보십시오. –