数组取并集、交集、差集

package xuxin;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 * @Description
 * @author xu.xin
 * @date 2018年7月14日 上午10:54:20
 */
public class sum {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] a = { 12, 1, 2, 12, 1, 221432545, 6, 4, 6, 4, 56, 54654 };
		int[] b={12,1,21,2,1,3213,4,4};
		reverseArray(a);//数组a反转输出(倒着排序输出)
		joinArray(a,b);//数组a,b合并输出,合并数组
		diffSet(a,b);//数组a,b差集(具有各不同的元素)
		intersectionArray(a,b);//数组a,b交集
		unionSet(a,b);//数组a,b并集
		
		
	}
//数组反转顺序输出
	static void reverseArray(int a[]) {
		ArrayList<Integer> arrayList = new ArrayList<>();
		for (int i = 0; i < a.length; i++) {
			arrayList.add(a[i]);
		}
		System.out.println("反转前:");
		for (Integer integer : arrayList) {
			System.out.print(integer + " ");
		}
		System.out.println();
		Collections.reverse(arrayList);// 反转指定列表中的顺序
		System.out.println("反转后:");
		for (Iterator<Integer> iterator = arrayList.iterator();
				iterator.hasNext(); 
				System.out.print(iterator.next() + " "));

	}
	
	//合并数组
	
	public static void joinArray(int[] a,int[] b){
		ArrayList<Integer> list=new ArrayList<>();
		for(Integer i:a){
			list.add(i);
		}
		for(Integer j:b){
			list.add(j);
		}
		System.out.println("合并数组:");
		for(Integer m:list){
			System.out.print(m+" ");
		}	
	}
	
	//数组差集
	private static void diffSet(int[] a,int[] b) {
		// TODO Auto-generated method stub
		ArrayList<Integer>array1=new ArrayList<>();
		ArrayList<Integer>array2=new ArrayList<>();
		for(int i:a){
			array1.add(i);
		}
		for(int j:b){
			array2.add(j);
		}
		array1.removeAll(array2);//两个ArrayList取差集
		for(Integer integer:array1){
			System.out.print(integer+" ");//输出数组
		}
	}
	
	
	//求两个数组的交集
	private static void intersectionArray(int a[],int b[]){
		ArrayList<Integer>array1=new ArrayList<>();
		ArrayList<Integer>array2=new ArrayList<>();
		for(int i:a){
			array1.add(i);
		}
		for(int j:b){
			array2.add(j);
		}
		array1.retainAll(array2);//两个ArrayList取交集
		for(Integer integer:array1){
			System.out.print(integer+" ");
		}
		
	}
	
	//两个数组取并集
	public static void unionSet(int[] a,int[] b){
		Set<Integer> set=new HashSet<>();//HashSet集合的优势就是不存储相同元素
		for(int i:a){
			set.add(i);
		}
		for(int j:b){
			set.add(j);
		}
		for(Iterator<Integer>iterator=set.iterator();iterator.hasNext();){
			Integer integer=(Integer)iterator.next();
			System.out.print(integer+" ");
			
		}
		System.out.println();	
	}
	
	

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值