如何在java中的地图中获取字符串集的交集

时间:2014-06-16 22:22:29

标签: java collections set

我有一个密钥对映射为(String,Set(Integer))。其中每个条目表示元素的出现。现在我想要做的是从该键中获取一组元素,并找到所有这些元素同时发生的事件。该集将逐渐递增。

我坚持如何使用Set of String和Map of String,Set-Integer作为输入形成一个方法,它将返回一个Set of Integer作为输出,它将包含map中对应于键的所有整数的交集来自一组字符串。

这是我的地图

Map<String,Set<Integer>> transactions = new HashMap<String,Set<Integer>>();

这是字符串

Set<String> check_set

现在问题是如何制作这个方法

Set<Integer> getIntersection(Map<String,Set<Integer>> transactions, Set<String> check_set)

将返回与字符串集中的键对应的所有整数集的交集。 我知道我必须使用retainAll函数,但我无法弄清楚如何使用它。 这有点令人困惑。

1 个答案:

答案 0 :(得分:0)

此处已在 Oracle Java教程中提及Set Interface Bulk Operations,并详细解释了这些示例。

s1.retainAll(s2) - 将s1转换为s1和s2的交集。 (两个集合的交集是仅包含两个集合共有的元素的集合。)


要非破坏性地计算两个集合的并集,交集或设置差异(不修改任何一个集合),调用者必须在调用相应的批量操作之前复制一个集合。

Set<Type> intersection = new HashSet<Type>(s1);
intersection.retainAll(s2);