Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查2D LinkedHashSet是否包含特定字符串_Java_Linkedhashset - Fatal编程技术网

Java 检查2D LinkedHashSet是否包含特定字符串

Java 检查2D LinkedHashSet是否包含特定字符串,java,linkedhashset,Java,Linkedhashset,我正在尝试查找是否在我创建的2D LinkedHashSet中找到了特定的字符串值 以下是一些用于初始化LinkedHashSet的代码: LinkedHashSet<LinkedHashSet<String>> block = new LinkedHashSet<LinkedHashSet<String>>(); LinkedHashSet块=新建LinkedHashSet(); 我尝试过使用.contains,但它的参数类型似乎不正确:

我正在尝试查找是否在我创建的2D LinkedHashSet中找到了特定的字符串值

以下是一些用于初始化LinkedHashSet的代码:

LinkedHashSet<LinkedHashSet<String>> block = new LinkedHashSet<LinkedHashSet<String>>();
LinkedHashSet块=新建LinkedHashSet();
我尝试过使用.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]))); 
                } 
int N=Integer.parseInt(b1.readLine());
对于(int i=0;ilist.contains(排序[0])){
//系统输出打印项次(“我输入”);
用于(集合内部集合:块){
for(字符串:innerSet){
if(string.equals(排序[0])){
innerSet.add(排序[5]);
}
if(string.equals(排序[5])){
add(排序[0]);
}
}
}
}
否则{
add(新的LinkedHashSet(Arrays.asList(排序[0],排序[5]));
} 
您可以使用流

填充哈希集


Set nestedSet=new LinkedHashSet();
LinkedHashSet集1=
新的LinkedHashSet(α、β、γ、δ、ε的集合);
LinkedHashSet2=
新LinkedHashSet(一套苹果、橘子、梨、葡萄、香蕉);
nestedSet.add(set2);
添加(set1);
测试数据

      Map<String, Boolean> testData = Map.of("alpha", true, "pears", true, 
      "papayas", false, "eta", false, "omega", false, "house", false);

存在公共静态布尔值(集合,
字符串(目标){
返回sets.stream().anyMatch(set->set.contains(target));
}
您可以使用流

填充哈希集


Set nestedSet=new LinkedHashSet();
LinkedHashSet集1=
新的LinkedHashSet(α、β、γ、δ、ε的集合);
LinkedHashSet2=
新LinkedHashSet(一套苹果、橘子、梨、葡萄、香蕉);
nestedSet.add(set2);
添加(set1);
测试数据

      Map<String, Boolean> testData = Map.of("alpha", true, "pears", true, 
      "papayas", false, "eta", false, "omega", false, "house", false);

存在公共静态布尔值(集合,
字符串(目标){
返回sets.stream().anyMatch(set->set.contains(target));
}

您可以使用
parallelSteam
使流程并行且快速-

block.parallelStream()
     .filter(stringSet -> 
          stringSet.contains(input))
     .collect(Collectors.toList()).size() >  0
上面的代码采用
LinkedHashSet
)和
输入
字符串。使用fork join pool中的多个线程查找不同集合中的输入字符串。最后,它收集包含输入字符串的所有此类集合,如果大于0,则检查大小,如果大于0,则返回true,否则返回false

编辑1
更好的版本
是这样吗-

block.parallelStream().anyMatch(strings -> strings.contains(input))
这将大大提高效率,因为它只等待第一次匹配,并立即返回true

anyMatch
javadoc-


您可以使用
parallelSteam
使流程并行且快速-

block.parallelStream()
     .filter(stringSet -> 
          stringSet.contains(input))
     .collect(Collectors.toList()).size() >  0
上面的代码采用
LinkedHashSet
)和
输入
字符串。使用fork join pool中的多个线程查找不同集合中的输入字符串。最后,它收集包含输入字符串的所有此类集合,如果大于0,则检查大小,如果大于0,则返回true,否则返回false

编辑1
更好的版本
是这样吗-

block.parallelStream().anyMatch(strings -> strings.contains(input))
这将大大提高效率,因为它只等待第一次匹配,并立即返回true

anyMatch
javadoc-


什么类型的?这是你今天问的第二个问题。你能分享你的全部尝试吗?请创建一个。@hd1它是一个字符串。@Turing85我的全部尝试不一定会给问题添加更多的细节,因为我只在这一行遇到问题。我正在解决的这个问题来自usaco网站。该问题所属的比赛已经结束,因此允许对该问题进行讨论。这里有一个问题链接:输入在问题页面上指定。排序的类型是什么?这是您今天提出的第二个此类问题。你能分享你的全部尝试吗?请创建一个。@hd1它是一个字符串。@Turing85我的全部尝试不一定会给问题添加更多的细节,因为我只在这一行遇到问题。我正在解决的这个问题来自usaco网站。该问题所属的比赛已经结束,因此允许对该问题进行讨论。以下是问题的链接:输入在问题页面上指定。您可能需要进行一些测试。
parallelStream
选项速度非常慢,除非有足够的数据来保证它的使用。设置线程等会有一个初始惩罚。ForkJoinPool公共池在加载ForkJoinPool类时静态实例化。所以,线程创建的惩罚是任何线程创建都无法避免的一次。在大多数应用程序的正常用例中,它将被重用。是的,你是对的,这是并行并发的一般问题,如果没有太多的处理,你可能会有更多的时间。@WJS我看到了你的测试代码。您可以使用并行流在一次执行中尝试多个运行,您应该在以后的运行中看到更好的性能您可能需要进行一些测试。
parallelStream
选项速度非常慢,除非有足够的数据来保证它的使用。设置线程等会有一个初始惩罚。ForkJoinPool公共池在加载ForkJoinPool类时静态实例化。所以,线程创建的惩罚是任何线程创建都无法避免的一次。在大多数情况下,这是正常的用例,之后它将被重用