zoukankan      html  css  js  c++  java
  • Java 集合并交补

    示例

    package com.example;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.List;
    
    public class ListOpt {
        private List intersect(List ls1, List ls2) {
            List list = new ArrayList(Arrays.asList(new Object[ls1.size()]));
            Collections.copy(list, ls1);
            list.retainAll(ls2);
            return list;
        }
    
        private List union(List ls1, List ls2) {
            List list = new ArrayList(Arrays.asList(new Object[ls1.size()]));
            Collections.copy(list, ls1);
            list.addAll(ls2);
            return list;
        }
    
        private List diff(List ls1, List ls2) {
            List list = new ArrayList(Arrays.asList(new Object[ls1.size()]));
            Collections.copy(list, ls1);
            list.removeAll(ls2);
            return list;
        }
    
        public static void main(String[] args) {
            List<Integer> l1 = new ArrayList<Integer>() {{
                add(1);
                add(2);
                add(3);
            }};
            List<Integer> l2 = new ArrayList<Integer>() {{
                add(2);
                add(3);
                add(4);
            }};
    
            ListOpt opt = new ListOpt();
            List intersectList = opt.intersect(l1, l2);
            List union = opt.union(l1, l2);
            List diff = opt.diff(l1, l2);
    
            print(intersectList);
            print(union);
            print(diff);
    
        }
    
        private static void print(List lst) {
            if (lst.size() == 0) {
                return;
            }
            for (int i = 0; i <lst.size(); ++i) {
                System.out.println(lst.get(i));
            }
            System.out.println("---");
        }
    }

    输出

    2
    3
    ---
    1
    2
    3
    2
    3
    4
    ---
    1
    ---

    在操作之前对原对象进行了拷贝,如果对原对象直接操作会修改原来的对象

    另一种写法

    /**
     * Created by yuhui on 2017/7/11 0011.
     */
    import java.util.HashSet;
    import java.util.Set;
    
    public class TestSet {
    
        public static void main(String[] args) {
    
            Set<String> result = new HashSet<String>();
            Set<String> set1 = new HashSet<String>() {
                {
                    add("王者荣耀");
                    add("英雄联盟");
                    add("穿越火线");
                    add("地下城与勇士");
                }   
            };
    
            Set<String> set2 = new HashSet<String>() {
                {
                    add("王者荣耀");
                    add("地下城与勇士");
                    add("魔兽世界");
                }
            };
    
            result.clear();
            result.addAll(set1);
            result.retainAll(set2);
            System.out.println("交集:" + result);
    
            result.clear();
            result.addAll(set1);
            result.removeAll(set2);
            System.out.println("差集:" + result);
    
            result.clear();
            result.addAll(set1);
            result.addAll(set2);
            System.out.println("并集:" + result);
    
        }
    
    }
  • 相关阅读:
    JVM体系结构和工作方式
    ClassLoader工作机制
    Javac编译原理
    类与类之间的几种关系
    一周总结汇总_2016-09-04
    一周规划汇总_2016-09-04
    Java基础知识笔记(一:修饰词、向量、哈希表)
    控制反转IoC简介
    DBCP连接池简介
    Struts与Struts2的区别
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/7226085.html
Copyright © 2011-2022 走看看