Javaコレクション演算


Javaコレクション演算(交差、並列、差分)
参照先:https://blog.csdn.net/lsp1991/article/details/46931151
1、使い方
[List obj1].retainAll([List obj2]); //  
[List obj1].addAll([List obj2]); //  
[List obj1].removeAll([List obj2]); //  ,obj1-obj2 
  • 集合演算の戻り値は、集合
  • である.
  • 集合演算では、ターゲット集合をコピーしてバックアップするのが一般的です.そうしないと、演算後に集合要素が変更されます.例えば、
  • private List union(List l1,List l2) {
    		List list =new ArrayList(Arrays.asList(new Object[l1.size()]));
    		Collections.copy(list, l1); // l1   list 
    		list.addAll(l2);
    		
    		return list;
    		
    	}
    
  • 並列演算では,[List obj].addAll([List obj])を用いた方法で得られた結果は,2つの集合のすべての要素であり,重複する要素がある可能性があり,数学的な意味での並列とは異なり,数学的な意味での並列を求めるには変換が必要である.(したがって、一般的には、HashSetまたはTreeSetに要素を格納し、集合演算結果における要素の一意性を保証することができる)、例えば、
  • .
    		/*         */
    		//print the union of the two list
    		System.out.println("
    "); System.out.println("Union: "); list=opt.union(l1, l2); for(i=0;i
  • 数学的意味での並列結果
  • に変換
    /*               */
    //print the union of the two list
    		System.out.println("
    "); System.out.println("Union: "); list=opt.union(l1, l2); for(i=0;i

    *注意:
  • split()メソッドは、指定された正規表現に一致する文字列を分割します.注意:.、|および*などのエスケープ文字は、を付けなければなりません.注意:複数の区切り文字は、|をハイフンとして使用できます.
  • 2、集合演算例:
    import java.util.*;
    public class setOpt {
    
    	//The operation of Intersect
    	private List intersetct(List l1,List l2) {
    		List list=new ArrayList(Arrays.asList(new Object[l1.size()]));
    		Collections.copy(list, l1);
    		list.retainAll(l2);
    		
    		return list;
    	}
    	
    	//The operation of Union
    	private List union(List l1,List l2) {
    		List list =new ArrayList(Arrays.asList(new Object[l1.size()]));
    		Collections.copy(list, l1);
    		list.addAll(l2);
    		
    		return list;
    		
    	}
    	
    	//The operation of Diff
    	private List diff(List l1,List l2) {
    		List list =new ArrayList(Arrays.asList(new Object[l1.size()]));
    		Collections.copy(list, l1);
    		list.removeAll(l2);
    		
    		return list;
    	}
    	
    	public static void main(String[] args) {
    
    		String str1[]="1;2;3;4;6;8".split(";");
    		String str2[]="2;4;7;9".split(";");
    		int i,j;
    		
    		setOpt opt=new setOpt();
    		
    		List l1=new ArrayList();
    		List l2=new ArrayList();
    		List list;
    		
    		for(i=0;i

    付:ブルーブリッジカップ集合演算アルゴリズム問題(TreeSetメモリ要素の一意性解法):https://blog.csdn.net/CR_fun/article/details/79294541