-1
我想檢查一個LinkedHashmap
的值是否已經包含一個字符串,如果沒有,將它添加到ArrayList中。 windowSize
是1和7(預定)檢查一個字符串是否已經在LinkedHashMap中(作爲一個值)
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 -> [ ]
謝謝您的理解幫助。
參見:[堆棧溢出不會閱讀所有](http://meta.stackexchange.com/a/129787/172496) – 2012-04-26 20:06:23
你應該**真的**考慮使用[Guava Multimap](http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Multimap.html)。 @BrianRoach呃,那真的不是那麼多的代碼。 – 2012-04-26 20:06:50
@MДΓΓБДLL但是沒有真正的描述它應該做什麼。當然,這裏有所需的輸出,但代碼複雜,爲什麼這應該是輸出會有所幫助。 – Jochen 2012-04-26 20:07:58