java - 检查 2D LinkedHashSet 是否包含特定字符串
问题描述
我正在尝试查找是否在我创建的 2D LinkedHashSet 中找到了特定的字符串值。
下面是一些初始化 LinkedHashSet 的代码:
LinkedHashSet<LinkedHashSet<String>> block = new LinkedHashSet<LinkedHashSet<String>>();
我曾尝试使用 .contains 像这样,但它似乎是一个不正确的参数类型:
int N = Integer.parseInt(b1.readLine());
for(int i = 0; i<N; i++) {
String sorts [] = (b1.readLine()).split(" ");
if(block.stream().anyMatch(list->list.contains(sorts[0]))) {
//System.out.println("I entered");
for (Set<String> innerSet : block) {
for (String string : innerSet) {
if(string.equals(sorts[0])) {
innerSet.add(sorts[5]);
}
if(string.equals(sorts[5])) {
innerSet.add(sorts[0]);
}
}
}
}
else {
block.add(new LinkedHashSet<String>(Arrays.asList(sorts[0], sorts[5])));
}
解决方案
您可以使用流。
填充您的哈希集。
Set<Set<String>> nestedSet = new LinkedHashSet<>();
LinkedHashSet<String> set1 =
new LinkedHashSet<>(Set.of("alpha", "beta", "gamma", "delta", "epsilon"));
LinkedHashSet<String> set2 =
new LinkedHashSet<>(Set.of("apples", "oranges", "pears", "grapes", "bananas"));
nestedSet.add(set2);
nestedSet.add(set1);
测试数据
Map<String, Boolean> testData = Map.of("alpha", true, "pears", true,
"papayas", false, "eta", false, "omega", false, "house", false);
运行
testData.forEach((item, expectedResult)-> {
System.out.printf("Item = \"%s\", Expected return = %b, actual = %b%n",
item,expectedResult, exists(nestedSet, item));
});
public static boolean exists(Set<Set<String>> sets,
String target) {
return sets.stream().anyMatch(set->set.contains(target));
}
推荐阅读
- flutter - 使用不包含导航器的上下文请求导航器操作,即使第二条路线具有上下文
- string - 这两条线有什么区别?
- javascript - 目标标签然后使用 Javascript 替换文本
- javascript - 如何从所有子集合中获取数据 firstore
- android - 创建回收站视图时,某些设备上的应用程序崩溃
- javascript - 侧边栏在滚动时不活动 - Jquery
- javascript - 我正在使用 D3,如何纠正“t 不是可迭代错误”?
- arrays - 以优化的方式找到从第 0 个索引到索引 k 的数组的 mex 和从第 k 个索引到最后一个元素的 mex?
- python - 将 H2O AutoML 模型转换为 Sklearn 模型
- python - 从 IMAP OUTLOOK Python 插入错误的 URL