-1

の値にLinkedHashmapすでに文字列が含まれているかどうかを確認し、含まれていない場合は、それをArrayListに追加します。 windowSize1〜7(事前定義)

String wholeString = "HausA HausB";

final Map<String, ArrayList<String>> generateMap = new LinkedHashMap<String, ArrayList<String>>();
final int limit = wholeString.length() - windowSize;
    for (int i = 0; i < limit; i++) {
        String first = wholeString.substring(i, i + windowSize);
        String second = wholeString.substring(i + windowSize, i
                + windowSize + 1);

        int endKey = i + windowSize;
        if (!generateMap.containsKey(first)) {
            generateMap.put(wholeString.substring(i, endKey),
                    new ArrayList<String>());
        }
                    //check here if the String 'second' is already mapped to the key'
                    if (i < limit && !generateMap.get(first).equals(second)) {
            generateMap.get(first).add(second);
        } else {
            generateMap.get(first).add(null);
        }
    }

   for (Entry<String, ArrayList<String>> e : generateMap.entrySet()) {
        System.out.println(e.getKey() + " -> " + e.getValue()+ "\n");
   }

今すぐ出力:

HausA -> [ ]
ausA  -> [H]
usA H -> [a]
sA Ha -> [u]
A Hau -> [s]
Haus  -> [B]
HausB -> [ ]

それがどうあるべきか:

HausA -> [ ]
ausA  -> [H]
usA H -> [a]
sA Ha -> [u]
A Hau -> [s]
Haus  -> [A,B] //<---
HausB -> [ ]

よろしくお願いします。

4

1 に答える 1

1

これがどのように適合するかを見てください...

final String wholeString = " HausA HausB";
final Map<String, Set<String>> generateMap = new LinkedHashMap<String, Set<String>>();
final int windowSize = 5;

final int limit = wholeString.length() - windowSize;
for (int i = 0; i < limit; i++) {
  final int endKey = i + windowSize;
  final String
      first = wholeString.substring(i, endKey),
      second = wholeString.substring(endKey, endKey + 1);
  if (!generateMap.containsKey(first))
    generateMap.put(first, new HashSet<String>());
  generateMap.get(first).add(second);
}

for (Entry<String, Set<String>> e : generateMap.entrySet()) {
  System.out.println(e.getKey() + " -> " + e.getValue());
}
于 2012-04-26T21:25:11.160 に答える