首页 > java > java 获取两个数组的交集

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]
		 */
	}
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.