1. 程式人生 > >【java】Collection的拼接和並集

【java】Collection的拼接和並集

集合操作常常需要進行一些如多個集合進行拼接,求並集,下面來看看怎麼做拼接和求並集

1.拼接(含重複元素並集,嚴格意義上並集不含重複元素)
實現一:

//採用Collection定義的方法addAll(),適用兩個集合進行拼接
A.addAll(B);

實現一的這種方式最終拼接的結果將放在A中,因此A放生改變了;如果要拼接的集合有幾十個,這也不是很方便。

下面我們自己來實現這個功能

實現二:

    /**
     * @author puyf
     * @Description:拼接所有需要拼接的集合,輸入->輸出:Collection<K extends Collection<T>> ->> List<T>
     * @param
datas 泛型為K的集合(K是一個Collection的子集就行了,這樣datas中的元素K可以是List,可以是Set) * @return 以List<T>的形式拼接所有集合 */
public static <T, K extends Collection<T>> List<T> contact(Collection<K> datas) { List<T> result = new ArrayList<>(); for (K k : datas) { result.addAll(k); } return
result; } /** * @author puyf * @Description:拼接所有需要拼接的集合,輸入->輸出:n個K(K滿足K extends Collection<T>) ->> List<T> * @param datas 可變引數datas,datas的泛型為K(K是一個Collection的子集就行了,這樣datas中的元素K可以是List,可以是Set) * @return 以List<T>的形式拼接所有集合 */ public static
<T, K extends Collection<T>> List<T> contact(K... datas) { return contact(Arrays.asList(datas)); } //測試 public static void main(String[] args) { List<Integer> listdata1 = new ArrayList<>(Arrays.asList(new Integer[]{1,2,3,4,5,6,7,8})); List<Integer> listdata2 = new ArrayList<>(Arrays.asList(new Integer[]{1,2,3,4,5,6,7,8})); Set<Integer> set = new HashSet<>(Arrays.asList(new Integer[]{99,100})); List<Collection<Integer>> input = new ArrayList<>(); input.add(listdata1); input.add(listdata2); input.add(set); System.out.println("contact可以完成拼接功能:"); System.out.println(contact(input)); System.out.println(contact(listdata1,listdata2,set)); } //測試結果如下: contact可以完成拼接功能: [1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 99, 100] [1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 99, 100]

2.並集
在集合拼接的基礎上進行去重即可(檢視集合的去重