Java的基本API裡面並沒有關於數學方面的集合運算,不過Apache的擴充API裡面有,可以到此下載:
http://commons.apache.org/

它可以執行「物件」的集合運算,相關API可以直接看此:
http://commons.apache.org/collections/api-release/org/apache/commons/collections/CollectionUtils.html

沒錯!它只能進行物件(Object)的集合運算,也就是一般的原生型態(Primitive Type)並不可以進行運算。
所以如果使用int的話,得轉成Integer去進行處理,這是相當麻煩的事情,不過總比自己去寫API方便~
以下為參考自:http://iorit2003.javaeye.com/blog/157175 的範例程式:


String[] arrayA = new String[] { "1", "2", "3", "4", "5" };
String[] arrayB = new String[] { "3", "4", "5", "6", "7" };

List a = Arrays.asList( arrayA );
List b = Arrays.asList( arrayB );

Collection union = CollectionUtils.union( a, b );
Collection intersection = CollectionUtils.intersection( a, b );
Collection disjunction = CollectionUtils.disjunction( a, b );
Collection subtract = CollectionUtils.subtract( a, b );

System.out.println( "A: " + ArrayUtils.toString( a.toArray( ) ) );
System.out.println( "B: " + ArrayUtils.toString( b.toArray( ) ) );
System.out.println( "Union(A,B): " + ArrayUtils.toString( union.toArray( ) ) );
System.out.println( "Intersection(A,B): " + ArrayUtils.toString( intersection.toArray( ) ) );
System.out.println( "Disjunction(A,B): " + ArrayUtils.toString( disjunction.toArray( ) ) );
System.out.println( "Subtract(A,B): " + ArrayUtils.toString( subtract.toArray( ) ) );



輸出結果:


A: {1,2,3,4,5}
B: {3,4,5,6,7}
Union(A,B): {3,2,1,7,6,5,4}
Intersection(A,B): {3,5,4}
Disjunction(A,B): {2,1,7,6}
Subtract(A,B): {1,2}





arrow
arrow
    全站熱搜

    kuster 發表在 痞客邦 留言(0) 人氣()