我正在寻找最佳解决方案来查找具有最大字符串匹配的匹配集。 这是示例,
inSet = ["a","b","c","x"]
其他套装列表
set1 = ["a","d","q","s"]
set2 = ["a","m","t","b","z"]
set3 = ["a","x","b","s","r","t"]
在上面的例子中,set3 是最大值。匹配数 (3)。
什么是用最少的执行找到的最佳算法。 任何指示或建议表示赞赏。
最佳答案
让我们有Set<String> set
和Guava.Sets:
Set<Set<String>> set = new Set<>();
//add Set<String>s
Set<String> maxMatchSet = set.stream()
.max(Comparator.comparingInt((value -> Sets.intersection(value, inSet).size()))
.get();
好的,现在来一些理论。 ["a", "b"]
不是集合而是数组(或列表)。 Java 中有不同的数据结构。集合在 {}
中表示.
无论如何,重要的是代码。
Set<String> set = new HashSet<>();
将初始化Set
和
List<String> list = new ArrayList<>();
将初始化List
。还有另一种选择:
String[] array = new String[3];
将初始化大小为 3 的新数组。数组是固定长度的。
关于java - 从多个集合中找到最大匹配计数集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41228065/