【java】Collection的拼接和并集

来源:互联网 发布:tcl 不能看网络电视 编辑:程序博客网 时间:2024/06/04 20:07

转载请注明出处:http://blog.csdn.net/u012250875/article/details/78193285

集合操作常常需要进行一些如多个集合进行拼接,求并集,下面来看看怎么做拼接和求并集

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.并集
在集合拼接的基础上进行去重即可(查看集合的去重)

原创粉丝点击