`
yzsy0818
  • 浏览: 1277 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

JAVA集合运算获得数据差异(补集)

 
阅读更多
补集一般指绝对补集,即一般地,设S是一个集合,A是S的一个真子集,由S中所有不属于A的元素组成的集合,叫做子集A在S中的绝对补集(简称补集或余集)。

程序中的补集一般用于比较数据差异。
比如:云同步手机联系人
手机端                                           云端
张三        10010                   张三         10013
李四        10011                   王八          10016
王五        10012                   李四          10011
在大数据量的情况下,我们可能需要程序过滤出差异数据好进行数据同步。
相对补集

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class Test {

   
    public static void main(String[] args) {
        // TODO Auto-generated method stub

   
          List> l_m1 = new ArrayList>();
              Map map1=new HashMap();
              map1.put("id", "1");
              map1.put("hash", "10086");
              Map map2=new HashMap();
              map2.put("id", "2");
              map2.put("hash", "10087");
              Map map3=new HashMap();
              map3.put("id", "3");
              map3.put("hash", "10088");
              Map map8=new HashMap();
              map8.put("id", "8");
              map8.put("hash", "88888");
              l_m1.add(map1);
              l_m1.add(map2);
              l_m1.add(map3);
              l_m1.add(map8);
          List> l_m2 = new ArrayList>();
              Map map4=new HashMap();
              map4.put("id", "4");
              map4.put("hash", "10089");
              Map map5=new HashMap();
              map5.put("id", "5");
              map5.put("hash", "10090");
              Map map6=new HashMap();
              map6.put("id", "6");
              map6.put("hash", "10091");       
              Map map9=new HashMap();
              map9.put("id", "8");
              map9.put("hash", "88888");
              l_m2.add(map4);
              l_m2.add(map5);
              l_m2.add(map6);         
              l_m2.add(map9);
              System.out.println(Test.retainAll(l_m1, l_m2).toString());;
    }
   
   
   
    public  static Map retainAll(List> l1,List> l2){
        List l1_h=new ArrayList();
        Map> l1_h_m=new HashMap>();
        List l2_h=new ArrayList();
        Map> l2_h_m=new HashMap>();
        for(int i=0;i
            l1_h.add(i, l1.get(i).toString().hashCode());
            l1_h_m.put(l1.get(i).toString().hashCode(),l1.get(i));
        }
        for(int i=0;i
            l2_h.add(i, l2.get(i).toString().hashCode());
            l2_h_m.put(l1.get(i).toString().hashCode(),l1.get(i));
        }
        l1_h.retainAll(l2_h);
       
        for(Integer hash:l1_h){
            l1_h_m.remove(hash);
        }
        for(Integer hash:l1_h){
            l2_h_m.remove(hash);
        }

        List> rl1=new ArrayList>();
        for(Map.Entry> entry  : l1_h_m.entrySet()) {
            rl1.add(entry.getValue());
        }   

        List> rl2=new ArrayList>();
        for(Map.Entry> entry  : l2_h_m.entrySet()) {
            rl2.add(entry.getValue());
        }           
        Map rsm=new HashMap();
        rsm.put("l1", rl1);
        rsm.put("l2", rl2);
        return rsm;
    }

}
分享到:
评论

相关推荐

    java集合深度学习

    总的来说,理解HashMap和HashTable之间的差异是Java集合框架深度学习的关键部分。在选择使用哪个类时,需要根据具体的应用场景和性能需求来决定。同时,深入理解这些类的内部实现,有助于编写更高效、更安全的Java...

    基于数据结构与简化内存模型的Java集合教学方法研究.pdf

    通过这样的讲解,学生能够将Java集合框架中的List、ArrayList和LinkedList等类与数据结构中的概念相对应,从而理解它们的使用场景和效率差异。 在深入理解数据结构的基础上,教学方法的第二步是通过Java的集合框架...

    Java集合面试题全集

    ### Java集合面试题全集解析 #### 一、List、Set、...通过以上知识点的梳理,我们可以更好地理解Java集合框架的基本概念、各种实现类的特点以及它们之间的差异。这对于准备面试或深入学习Java编程语言都非常有帮助。

    Java 集合框架高难度进阶版面试题集锦解析

    - Iterator 支持删除操作,是Java集合框架的标准迭代器。 - Enumeration 是早期Java版本的迭代接口,不支持删除操作,主要用于Vector和Hashtable等老式集合。 理解这些集合框架的关键概念和它们之间的区别,对于...

    java面试大集合

    Java面试大集合是Java开发者,特别是初学者的重要参考资料,它涵盖了广泛的Java编程和面试相关的知识点。这个集合旨在帮助应聘者全面准备Java相关的技术面试,确保他们能够顺利通过各种考核。 一、基础概念 1. Java...

    java面试题集合

    ### Java面试题集合详解 #### 一、面向对象的四大特征 在Java中,面向对象编程的核心在于四个关键特征:抽象、继承、封装和多态性。 1. **抽象**:抽象是面向对象编程的基础,它允许我们关注事物的本质属性,而...

    java面试题目精选

    - **原始数据类型的分类**:分类介绍了Java中的原始数据类型。 - **变量初始化**:讨论了变量初始化的重要性及其常见问题。 - **4.1 运算符和类型转换** - **Java运算符**:全面覆盖了Java中的各种运算符,包括...

    Java集合教程吐血整理干货.md

    # Java集合详解 ## 线程不安全的集合 ### HashMap的特点 - **实现机制**: 在 JDK 8 之前,`HashMap` 使用拉链法(即链表)来处理哈希冲突。到了 JDK 8,为了提高性能,引入了拉链法与红黑树相结合的方式。具体来说...

    Java经典面试题集(详尽版).doc

    Java 是一种广泛使用的面向对象的编程语言,其经典面试题集涵盖了多个核心领域,如基础语法、异常处理、集合框架、多线程、I/O流、设计模式、数据库交互以及框架应用等。以下是针对这些领域的部分知识点详解: 1. *...

    JAVA 面试题集 pdf

    ### JAVA面试题集知识点解析 #### 一、异常处理机制 **知识点概述:** 异常处理是Java编程语言中用于管理程序执行过程中可能出现的错误的重要机制。通过异常处理,程序员能够优雅地处理各种运行时错误,避免程序...

    数据结构与算法(JAVA语言版)

    - **List接口**:介绍Java集合框架中的List接口及其常用方法。 - **Strategy接口**:解释策略模式的概念及其在本章节中的应用。 - **线性表的顺序存储与实现** - 讲解顺序存储的特点、优缺点以及其实现细节。 -...

    JAVA数据结构与算法

    - **基本数据类型及运算**:介绍了Java中的基本数据类型(如整型、浮点型等)及其运算规则。 - **流程控制语句**:讨论了条件语句(如if-else)、循环语句(如for、while)等,用于控制程序执行流程。 - **字符串...

    java考试复习资料

    Java为每种基本数据类型都提供了一个包装类,例如: - `byte`: `Byte` - `short`: `Short` - `int`: `Integer` - `long`: `Long` - `float`: `Float` - `double`: `Double` - `char`: `Character` - `boolean`: `...

    java C++ 书籍收藏

    - Collection Framework:Java集合框架为表示和操作集合提供了一套性能优良、接口统一的API。 - Map、Set、List等接口和实现类:例如HashMap、TreeSet等,是Java集合框架的核心部分。 4. Java加密扩展(JCE) - ...

    JAVA语言版数据结构与算法(中文)

    1. **基本数据类型及运算**:介绍JAVA中的基本数据类型如整型、浮点型、字符型等,以及各种算术、关系和逻辑运算符。 2. **流程控制语句**:讲解条件语句(if-else)、循环语句(for、while)和跳转语句(break、...

    JAVA面试题集

    `Collection`是Java集合框架的基础接口,定义了一系列基本操作。而`Collections`是工具类,提供了静态方法用于操作集合,如排序、查找和转换等。它们之间的关系类似于`List`接口和`ArrayList`类之间的关系。 ### 13...

Global site tag (gtag.js) - Google Analytics