我正在使用下面的代码来使用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