gpt4 book ai didi

java - 根据功能依赖性组合多重映射

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:24:46 30 4
gpt4 key购买 nike

给定一个多图,我需要根据它们的功能依赖性来组合条目。

我可能误用了术语功能依赖。我的意思是:

如果我有 multimap 的三个条目:

a -> b c d

b -> c e f

g -> f h i

我想把它们组合成

a -> c e d f

g -> h i

ef 转到 a 因为 ba 的值> 和 c, e, fb 的值。

hi 转到 g 因为 gh 都不是a 的值。

f 不会转到 a,因为它出现在 a 的值中(优先级升序)。

这是我编写的代码,它给出了 ConcurrentModificationError:

Multimap<Integer, Integer> map = TreeMultimap.create();
Multimap<Integer, Integer> map2 = TreeMultimap.create();
map.put(0, 1);
map.put(0, 3);
map.put(0, 4);
map.put(1, 3);
map.put(1, 4);
map.put(1, 6);
map.put(3, 7);
map.put(3, 9);
map.put(3, 10);
map.put(2, 7);
map.put(2, 8);
map.put(2, 9);
System.out.println(map);
for(int i : map.keySet())
{
for(int j : map.get(i))
{
if(map.containsKey(j))
{
Collection<Integer> list = map.get(j);
map2.putAll(i, map.get(j));
map.values().removeAll(list);
}
}
if(!map.values().contains(i))
map2.putAll(i, map.get(i));
}
System.out.println(map2);

输出是:

{0=[1, 3, 4], 1=[3, 4, 6], 2=[7, 8, 9], 3=[7, 9, 10]}
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.TreeMap$PrivateEntryIterator.nextEntry(Unknown Source)
at java.util.TreeMap$KeyIterator.next(Unknown Source)
at com.google.common.collect.AbstractMapBasedMultimap$WrappedCollection$WrappedIterator.next(AbstractMapBasedMultimap.java:486)
at test.Test.main(Test.java:68)

但是,我希望它是:

{0=[1, 3, 4], 1=[3, 4, 6], 2=[7, 8, 9], 3=[7, 9, 10]}
{0=[1, 3, 4, 6, 7, 9, 10], 2=[8]}

附言

一个键总是映射到三个值。

最佳答案

您不能遍历 map ,同时修改它。修复代码最简单的方法是在输入时创建一个新 map ,而不是修改现有的 map 。

关于java - 根据功能依赖性组合多重映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27381638/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com