zoukankan      html  css  js  c++  java
  • 求交集的几种方法

     //求两个数组的交集
        private static String[] intersect(String[] arr1, String[] arr2) {
            Map<String, Boolean> map = new HashMap<String, Boolean>();
            LinkedList<String> list = new LinkedList<String>();
            for (String str : arr1) {
                if (!map.containsKey(str)) {
                    map.put(str, Boolean.FALSE);
                }
            }
            for (String str : arr2) {
                if (map.containsKey(str)) {
                    map.put(str, Boolean.TRUE);
                }
            }
    
            for (Map.Entry<String, Boolean> e : map.entrySet()) {
                if (e.getValue().equals(Boolean.TRUE)) {
                    list.add(e.getKey());
                }
            }
    
            String[] result = {};
            return list.toArray(result);
        }
            //求两个Set集合的交集
            Set<Integer> result = new HashSet<Integer>();
            Set<Integer> set1 = new HashSet<Integer>(){{
                add(1);
                add(3);
                add(5);
            }};
            
            Set<Integer> set2 = new HashSet<Integer>(){{
                add(1);
                add(2);
                add(3);
            }};
            
            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);
    //求两个list集合的交集 
    List list1 =new ArrayList();
      list1.add("1111");
      list1.add("2222");
      list1.add("3333");
      
      List list2 =new ArrayList();
      list2.add("3333");
      list2.add("4444");
      list2.add("5555");
      
      //并集
      //list1.addAll(list2);
      //交集
      //list1.retainAll(list2);
      //差集
      //list1.removeAll(list2);
      //无重复并集
        list2.removeAll(list1);
        list1.addAll(list2);
      
      Iterator<String> it=list1.iterator();
      while (it.hasNext()) {
       System.out.println(it.next());
       
      }
      
      //System.out.println("-----------------------------------
    ");
      //printStr(list1);
       //使用交集工具类
       List<Integer> temp_list;

    List<Integer> tea_list;
       Collection<Integer> intersection = CollectionUtils.intersection(tea_list, temp_list);
    if (intersection.size() > 0) {

    }
  • 相关阅读:
    Java学习笔记——动态代理
    Java学习随笔——RMI
    数据结构与算法——排序算法
    设计模式——装饰者模式
    Struts2中使用execAndWait后,在 Action中调用getXXX()方法报告java.lang.NullPointerException异常的原因和解决方法
    vs中debug的一个小技巧 -- debug时忽略某段代码
    SilverlightMVVM模式中的数据校验
    技能图谱
    MQ队列管理器损坏的处理方法
    informix数据库锁表处理方法
  • 原文地址:https://www.cnblogs.com/kzfy/p/5455917.html
Copyright © 2011-2022 走看看