Java 求数组list共有的元素
Posted Roam-G
tags:
篇首语:本文由小常识网(cha138.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);
以上是关于Java 求数组list共有的元素的主要内容,如果未能解决你的问题,请参考以下文章