java 获取两个数组的交集
java 获取两个数组的交集,
自己去写实现?
还是寻找现有的方法呢?
结果自己是不用自己去实现。
先看下集合类提供的处理方式吧。
利用了 org.apache.commons.collections.CollectionUtils包的
intersection() 这个方法。
看包名也知道是哪里的工具了。
而第二个例子中,是这样的
数组 > List > 交集
下面是例子一
public void testArrays(){ List<Long> al = new ArrayList(); List<Long> bl = new ArrayList(); al.add(1L); al.add(2L); al.add(3L); al.add(4L); al.add(5L); bl.add(1L); bl.add(3L); bl.add(5L); List<Long>cl =(List<Long>) org.apache.commons.collections.CollectionUtils.intersection(al, bl); System.out.println(al); System.out.println(bl); System.out.println(cl); /* * 输出 * [1, 2, 3, 4, 5] [1, 3, 5] [1, 3, 5] */ }
好,上面的集合可以实现,那么,我们把数组转换成集合就行了。如何转换呢? 不用自己去写,有现在成的方法java.util.Arrays.asList()
下面是例子二
public void testArrays2(){ //需要注意的是,这里不能用这种方式 int a = new int[5].否则,得到的并不是你想要的结果 Integer[] a = new Integer[5]; for( int i=0;i<5;i++){ a[i] = i; } Integer[] b = new Integer[5]; for( int i=0;i<5;i++){ b[i] = i*2; } List al = java.util.Arrays.asList(a); List bl = java.util.Arrays.asList(b); List cl =(List) org.apache.commons.collections.CollectionUtils.intersection(al, bl); System.out.println(al); System.out.println(bl); System.out.println(cl); /* * 输出 [0, 1, 2, 3, 4] [0, 2, 4, 6, 8] [0, 2, 4] */ }
近期评论