Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.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 从列表中查找字符串,并查看是否部分位于另一个列表中_Java_Groovy - Fatal编程技术网

Java 从列表中查找字符串,并查看是否部分位于另一个列表中

Java 从列表中查找字符串,并查看是否部分位于另一个列表中,java,groovy,Java,Groovy,因此,我尝试在列表A中循环,以从列表D中找到元素,并在结果中得到如下结果: Result="F10,12 ;FR300,157-159; FR300,161-162; FR300,183-184; FR300,185-186; FR300,187-188; FR300,191-192" List<String> D= ("D","F10","FR300","FR300" ) Li

因此,我尝试在列表A中循环,以从列表D中找到元素,并在结果中得到如下结果:

Result="F10,12 ;FR300,157-159; FR300,161-162; FR300,183-184; FR300,185-186; FR300,187-188; FR300,191-192"



List<String> D= ("D","F10","FR300","FR300" )
List<String> A=("F10,12  | FR600,191-192 | FR400,191-192  | FR300,191-192  | FR300,187-188  | FR300,185-186  | FR300,183-184  | 3D  | FR300,157-159  | 1D  | FR300,161-162  | 300D")

String[] split_A = A.split("[|]")
String[] split_D = D.split("[,]")
for (s in split_A){
    for (item in split_D){
       if (item in s){
          println "Result"+ s
       }
    }
}
Result=“F10,12;FR300157-159;FR300161-162;FR300183-184;FR300185-186;FR300187-188;FR300191-192”
列表D=(“D”、“F10”、“FR300”、“FR300”)
列表A=(“F10,12 | FR600191-192 | FR400191-192 | FR300191-192 | FR300187-188 | FR300185-186 | FR300183-184 | 3D | FR300157-159 | 1D | FR300161-162 | 300D”)
字符串[]split_A=A.split([|]”)
字符串[]split\u D=D.split(“[,]”)
对于(拆分中的s){
对于(拆分中的项目){
如果(s中的项目){
println“结果”+s
}
}
}
因此,我的问题是如何找到匹配项,并能够得到类似于我尝试使用contains()的结果的东西,但它没有正确工作,并且我无法真正添加具有特定值的变量,如var=FR300,F10因为如果我在一个包含400多条记录的表上运行脚本,并且D列中的值可以更改,那么我需要找到一个可以工作的名称。。。
谢谢你的提示

好吧,最后我还是这样做了。。我知道这不是最好的办法

String[] split_A = A.split("[|]")
Set<String> myset = new HashSet<>();
String [] split_D = D.split("[,]");
for(int i=0;i<split_D.length;i++){
        myset.add(split_D[i]);  
}
for (String elem1: myset){
    for (elem2 in split_A){
        if( elem2.contains(elem1)){
            if (elem1!="D"){
                println elem2+"Found match"
            }
        }
    }
}
String[]split\u A=A.split([|]”)
Set myset=newhashset();
字符串[]split\u D=D.split(“[,]”);

对于(int i=0;i另一个备选方案如下:

for (String elem1: myset){
    for (elem2 in split_A){
        if( elem2.contains(elem1)){
            if (elem1!="D"){
//              println elem2+"Found match"
                Result.add([elem2])
            }
        }
    }
}
println Result

为什么D是一个列表,而它只是一个字符串?if应该看起来像这样
if(s.contains(item))
它是一个列表,但只是在示例中,我这样放置它只是为了显示列表中的内容,但你是对的,我会编辑它,这样人们就不会感到困惑