首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中从两个大小不同的数组列表中查找不相似的元素

在Java中从两个大小不同的数组列表中查找不相似的元素
EN

Stack Overflow用户
提问于 2018-09-11 14:48:44
回答 2查看 51关注 0票数 1

我有两个字符串类型的数组列表:

列出一个->芒果,香蕉,苹果

榜单b苹果->人

我必须从两个列表中找出不相似的元素。

直到我实现了这个:

代码语言:javascript
复制
List d = new ArrayList(a);
toReturn.removeAll(b);
return d;

但是这段代码的问题是我不想要芒果,因为列表b中的第一个元素包含"Man“字符串。我只想把"Banana“还回去。

EN

回答 2

Stack Overflow用户

发布于 2018-09-11 14:59:10

您可以遍历一个列表,并找到其中不是另一个列表的子字符串的项,然后当然是相同的,参数颠倒:

代码语言:javascript
复制
private static Stream<List> filterNonSimilar(List<String> a, List<String> b) {
    return a.stream()
            .filter(ai -> b.stream().noneMatch(bi -> ai.contains(bi) || bi.contains(ai));
}

public static List<String> nonSimilar(List<String> a, List<String> b) {
    return Stream.concat(filterNonSimilar(a, b), filterNonSimilar(b, a))
                 .collect(Collectors.toList());
}
票数 1
EN

Stack Overflow用户

发布于 2018-09-11 14:59:40

您已经迭代了一个列表,然后必须在另一个列表中比较它,如果第二个列表中存在元素,则删除该元素(反之亦然),下面我将分享此方法的示例代码。

代码语言:javascript
复制
public class Comp {

public static void main(String... strings) {

    List<String> lis1 = new ArrayList<>();
    lis1.add("applefy");
    lis1.add("boy");
    lis1.add("carrr");

    List<String> lis2 = new ArrayList<>();
    lis2.add("apple");
    lis2.add("car");

    List<String> result = new ArrayList<>();
    for (String a : lis1) {

        for (String b : lis2) {
            if (a.contains(b)) {
                result.add(a);
               }

        }

    }

    lis1.removeAll(result);

    System.out.println(lis1);

}

}输出: boy

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52270195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档