编程知识 cdmana.com

Java 求数组、list共有的元素

 

String[] string1 = {"a", "d", "k", "f"};
String[] string2 = {"a", "c", "d", "g", "f"};

求两个数组的共有元素

我们通常会遇到需要求两个数组中共同的元素,普通的方法就是利用两个for循环就可以得到结果,但是一般不建议这样写。下面我们来探讨一下,更多的方法来解决这个问题。

总体来看,感觉都没有那种直接可以调用的方法来使用,比如Python中就会提供一些直接求两个list的这种共有的元素,以及交集并集。

 Java中还是需要避免不了for循环。

如果你有更好的方法,欢迎推荐。

        String[] string1 = {"a", "d", "k", "f"};
        String[] string2 = {"a", "c", "d", "g", "f"};
        System.out.println("两个数组共有的元素: ");
        System.out.println("method 1 --");
        for (String str : string1) {
            for (String e : string2) {
                if (str.equals(e)) {
//                    共有的,
                    System.out.println(str);
                    break;
                }
            }
        }
        System.out.println("method 2 =======/*网上看到的方法,亲自测试是有错误的! */========");

        for (String str : string1) {
//            先循环数组1,看看能不能再数组2中找到。 >=表示相同,< 不同
//            有相同值才会返回该元素,  采用二分搜索法来搜索指定数组。
            if (Arrays.binarySearch(string2, str) >= 0) {
                System.out.println(str);
            }
        }
        System.out.println("method 3 --都插入到set中,后者能插入成功的是s2独有,失败的是共有的");
        Set<String> stringSet = new HashSet<String>();
        for (String s1 : string1) {
            stringSet.add(s1);
        }
//        string1已经都插入到set,string2不能查进去的就是string2独有的
        for (String s2 : string2) {
            if (stringSet.add(s2)) {
                System.out.println(s2 + " string2 独有的");
            } else {
                System.out.println(s2 + " 共有的");
            }
        }

        System.out.println("method 4 --利用list的contains");
//        List<String> stringList = new ArrayList<String>(string1);
//        把数组转化为list
        List<String> stringList = Arrays.asList(string1);
//        循环数组2
        for (String s2 : string2) {
            if (stringList.contains(s2)) {
                System.out.println("共有的 " + s2);
            } else {
                System.out.println("s2独有的 " + s2);
            }
        }

 

版权声明
本文为[Roam-G]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_41290863/article/details/127830761

Scroll to Top