繁体   English   中英

Java-检查两个字符串的交集

[英]Java - check intersection of two strings

我有一种方法来检查两个字符串的开头,这些字符串都是用逗号分隔的字符。

if(brauen[p] > 35){
                m1 = "A, S";
            }else if(brauen[p] <=35 && brauen[p]>20){
                m1 = "T";
            }else{
                m1 = "W";
            }
            if(mund[p] > 50){
                m2 = "S";
            }else{
                m2 = "T, W, E";
            }
            if(augen[p] > 25){
                m3 = "A, S";
            }else{
                m3 = "T, V, E";
            }

            List<String> l1 = Arrays.asList(m1.split(","));
            List<String> l2 = Arrays.asList(m2.split(","));
            List<String> l3 = Arrays.asList(m3.split(","));
            List<String> result = l1.stream().filter(l2::contains).collect(Collectors.toList());
            resultString = String.join(",", result);
            System.out.println(resultString);

该代码处于for循环中,遍历数组。

我现在不了解的内容:如果我定义单个字符串(例如上面三个列表的定义),则如下所示:

 String s1 = "T,V,E";
 String s2 = "T,W,E";

那么它的工作和结果是T,E ,除外。

但是使用我提供的代码无法正常工作,因此只能得到字符串T或空字符串。

奇怪的是: l1l2正确定义,如果我只是在定义之后打印它们,则值是正确的,并且交集也应为WS

因此,如果我像上面说的那样基本上在上面定义了相同的字符串,那么我真的找不到任何问题,所以:

String s1 = "T,V,E";
 String s2 = "T,W,E";

要么

String s1 = "A,S";
 String s2 = "S";

则它可以正常工作,但是如果我使用从m1m2获取值的列表,则尽管列表看起来完全一样,但是它不起作用。

有人可以帮我吗?

只需将字母放入具有某些描述的Collection中即可(可以是List ,如果要丢弃重复项,可以Set ):

Set<String> first = new LinkedHashSet<>(Arrays.asList(s1.split(","));
Set<String> second = new LinkedHashSet<>(Arrays.asList(s2.split(","));

然后只需从first开始删除所有不在second的元素(或者换一种方式,只保留firstsecond的元素):

first.retainAll(second);

现在再次加入他们:

String intersection = String.join(",", first);

如果没有使用特定的要求for循环使用数组,那么我会用集合和库的方法来实现这一目标,例如:

String s1 = "T,V,E";
String s2 = "T,W,E";

List<String> list1 = new ArrayList<>(Arrays.asList(s1.split(",")));
List<String> list2 = new ArrayList<>(Arrays.asList(s2.split(",")));

list1.retainAll(list2);
System.out.println(String.join(",", list1));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM