我正在使用下面的代碼來使用hashmap刪除傳遞性child-> parent關係。 (HashMap中的數據集是在兒童安全>父條目的條款。)使用HashMap刪除傳遞關係
private static void factor_transitivity(Map<String,String> dataset, boolean complete) {
if (!complete) {
complete = true; // Assume that on this check everything will come out to be OK.
for (Map.Entry<String, String> pair : dataset.entrySet()) {
if (dataset.containsKey(pair.getValue())) {
complete = false;
String value = dataset.get(pair.getValue());
dataset.put(pair.getKey(),value);
//System.out.print("");
break;
}
}
factor_transitivity(dataset, complete);
}
}
請注意評論
//System.out.println("")
線。如果我取消註釋該行,那麼代碼工作正常。但是,如果我將其留言評論,則會收到如下錯誤消息:
Exception in thread "main" java.lang.StackOverflowError
at java.util.HashMap.hash(HashMap.java:362)
at java.util.HashMap.getEntry(HashMap.java:462)
at java.util.HashMap.get(HashMap.java:417)
爲什麼我會得到這種奇怪的行爲?
向我們展示更多的堆棧。 – 2014-09-19 13:07:05
提供一個http://stackoverflow.com/help/mcve **,其中包含一張填充了數據的地圖,該數據顯示實際發生錯誤的位置。 – Marco13 2014-09-19 13:59:09
是的,只要我能夠自己識別這些數據,就會上傳包含導致問題的數據的地圖。我有一個非常大的輸入數據集,因此需要一些時間才能看到我自己。 – bikashg 2014-09-19 14:42:35