1. 程式人生 > >陣列取並集、交集、差集

陣列取並集、交集、差集

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();	
	}
	
	

}

相關推薦

php中陣列交集函式

計算陣列的並集 array_merge ( array array1[,arrayarray1[,array… ] )  將一個或多個數組的單元合併起來,一個數組中的值附加在前一個數組的後面。返回作為結果的陣列。 計算陣列的交集 array_intersect ( a

JS陣列交集

es7: filter結合includes // 並集 let union = a.concat(b.filter(v => !a.includes(v))) // [1,2,3,4,5] // 交集 let intersectio

PHP陣列的幾個操作,求交集陣列與字串的相互轉換及陣列去重

在php中如果我想要對兩個陣列進行如並集、交集和差集操作,我們可直接使用php自帶的函式來操作如array_merge(),array_intersect(),array_diff(). 計算陣列的合併 array_merge與“+”的區別 array_merge() 函式

JS實現交集

交集 clas 差集 log set nio bsp csdn 實現 var set1 = new Set([1,2,3]);var set2 = new Set([2,3,4]); 並集let union = new Set([...set1, ...set2]); 交集

利用sort和uniq求兩個文件的交集

sort uniq  利用sort和uniq求兩個文件的並集,交集和差集  並集:cat file1.txt file2.txt | sort | uniq > file.txt  交集:cat file1.txt file2.txt | sort | uniq -d >file.txt 

shell中使用sort和uniq實現兩檔案的交集

網上轉的,不錯,比使用awk容易點 給定兩個檔案 a.txt 和 b.txt ,每行是一個記錄(假設沒有重複),要求輸出兩集合的交集、並集、差集,輸出的結果只包括唯一項。交集定義為同時出現在兩個檔案中的記錄項,並集定義為出現在任何一個檔案中的記錄項,差集(A-B)定義為出現在A中而且不出現在B中的記

Python listunion, 交集intersection, difference

轉載自翔雲並感謝Share python的集合set和其他語言類似,是一個無序不重複元素集, 可用於消除重複元素。 支援union(聯合), intersection(交), difference(差)和sysmmetric difference(對稱差集)等數學運算。 不支援 inde

ES6 運算元組的交集

使用ES6 運算元組 let a = new Set([1, 2, 3]); let b = new Set([3, 5, 2]); // 並集 let unionSet = new Set(

陣列交集

package xuxin; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java

ES6陣列實現交集

let set1 = new Set(['a','b','c','d','e','f']); let set2 = new Set(['d','e','f','g','h','i']); //並集 let union = [...new Set([...set1,...set2])]; /

兩個陣列交集

const arr1 = [1,2,3];const arr2 = [3,4,5];// 並集const union = Array.from(new Set([...arr1,...arr2])); 

List的 交集操作

bject list imp st2 for add str class lis package com.zheting.collection.list; import java.util.ArrayList; import java.util.Arrays; impo

SQL 操作結果 -交集結果排序

nbsp 分享 字段名 運算 語法 http 測試數據 結構 put 操作結果集   為了配合測試,特地建了兩個表,並且添加了一些測試數據,其中重復記錄為東吳的人物。   表:Person_1魏國人物       表:Person_2蜀國人物      A、Union形成並

集合類(交集操作)

昨日,朋友拿來一份有些問題的原始碼,是一個集合類和幾個集合操作函式(並集、交集、差集),幫忙改了一下,剛轉C++不到半個月,因為只是為了演算法競賽而學C++,所以只好好學了C++偏向演算法層的知識,類只是過了一遍,沒有自己嘗試寫過,剛好拿來練練手,於是大刀闊斧的

STL集合的交集對稱

STL一共提供了四種set相關的演算法,分別是並集(union),交集(intersection),差集(difference),和對稱差集(symmetric difference)。 STL的這四個演算法所接受的set必須是有序區間,元素可以重複出現。即他們只能接受se

MySQL 交集

建立兩個表 CREATE TABLE `object_a` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `oname` varchar(50) DE

獲取兩個DataTable之間的交集集合(ExceptIntersectUnion)

//獲取第一個資料來源DataTable         DataTable dt1 = DBHelper.GetDataTable("select top 10  ksdid,user_id,user_pwd from ksd_user_info");      

SQL中union(except(intersect(交集)用法,然而 mysql 不支援except 和 intersect

​​​​​​知識點: UNION返回兩個結果集的並集。還有一個union all的用法(union沒有包含重複列,union all 包含重複列) EXCEPT 返回兩個結果集的差(即從左查詢中返回右查詢沒有找到的所有非重複值(第一個表有,第二個表無))。 INTERS

兩個集合的相等判斷交集

#include<iostream> using namespace std; const int Size=10; void Get(int a[]); void Judge(int a[],int b[]);//判斷兩函式是否相等 void Intersaction(int a[],

Shell下做簡單的文字去重交集

工作中經常會碰到要拉取資料情況,有了資料之後做一個簡單的處理。 記錄一下最常用到的做去重的操作 假設有檔案list1 1 1 2 2 3 3 4 只用一條命令就能做去重的操作 cat list1 | uniq -u 結果會顯示一個 4 當然,如果要篩選出有過重複的數字,只