优点:时间复杂度为O(n)级别;

缺点:只适用于Int,以及Int的数字不能过大,集合元素数量不能过多。

理论分析:

两个集合的元素之和以及之积相同则,这两个集合相等。(前提是两个集合的数量一致)

证明: 先证明集合只有两个元素的情况A={a,b} B={x,y}

a+b=x+y,a*b=x*y 联立之后可以得出2组解a=x,b=y;a=y,b=x;说明2个集合相等。

更多的元素的集合。我们只需要假设k元素的时候相等。则k+1个元素是一样证明的,用不完全归纳法即可以解。

下面上代码:

public class SetEqual {

static boolean  isEqual(Set<Integer> set1,Set<Integer>set2){
        
        if(set1.size()!= set2.size()) return false;
        int sum1=0,sum2=0;
        int multi1=1,multi2=1;
        Iterator<Integer> it1 = set1.iterator();
        while(it1.hasNext()){
            Integer tmp = (Integer) it1.next();
            sum1 += tmp;
            multi1 = multi1*tmp;
        }
        Iterator<Integer> it2 = set2.iterator();
        while(it2.hasNext()){
            Integer tmp = (Integer) it2.next();
            sum2 += tmp;
            multi2 = multi2*tmp;
        }
        
        return  (sum1 == sum2)&&(multi1 == multi2);
        
    }
    
    public static void  main(String [] args){
        Set<Integer> set1= new HashSet<Integer>();
        Set<Integer> set2= new HashSet<Integer>();
        
        set1.add(1);set1.add(3);set1.add(5);set1.add(7);set1.add(11);
        set2.add(11);set2.add(13);set2.add(5);set2.add(7);set2.add(1);
        System.out.print("=="+isEqual(set1,set2));
    }
    
    
}

2个集合比较——最高效解法(Java实现)的更多相关文章

  1. Github优秀java项目集合(中文版) - 涉及java所有的知识体系

    Java资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-java 就是 akullpp 发起维护的 Java 资源列表,内容 ...

  2. 【译】快速高效学习Java编程在线资源Top 20

    想要加强你的编程能力吗?想要提升你的 Java 编程技巧和效率吗? 不用担心.本文将会提供快速高效学习 Java 编程的 50 多个网站资源: 开始探索吧: 1.MKyong:许多开发者在这里可以找到 ...

  3. 几种高效的Java工具类推荐

    本文将介绍了十二种常用的.高效的Java工具类 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类. 在开发中,使用这些工具类,不仅可以提高编码效率,还 ...

  4. 快速高效学习Java编程在线资源Top 20(转载)

    想要加强你的编程能力吗?想要提升你的 Java 编程技巧和效率吗? 不用担心.本文将会提供快速高效学习 Java 编程的 50 多个网站资源: 开始探索吧: 1.MKyong:许多开发者在这里可以找到 ...

  5. 高效使用Java构建工具,Maven篇|云效工程师指北

    大家好,我是胡晓宇,目前在云效主要负责Flow流水线编排.任务调度与执行引擎相关的工作. 作为一个有多年Java开发测试工具链开发经验的CRUD专家,使用过所有主流的Java构建工具,对于如何高效使用 ...

  6. 《码处高效:Java开发手册》之代码风格

    流水淡,碧天长,鸿雁成行.编码风格,简捷清爽,反引无限风光. 在美剧<硅谷>中有这样一个经典镜头,主人公 Richard 与同为开发工程师的女友闹分手,理由是两人对缩进方式有着截然不同的编 ...

  7. Java集合详解8:Java的集合类细节精讲

    Java集合详解8:Java集合类细节精讲 今天我们来探索一下Java集合类中的一些技术细节.主要是对一些比较容易被遗漏和误解的知识点做一些讲解和补充.可能不全面,还请谅解. 本文参考:http:// ...

  8. 在Dubbo中使用高效的Java序列化(Kryo和FST)

    在Dubbo中使用高效的Java序列化(Kryo和FST) 作者:沈理 文档版权:Creative Commons 3.0许可证 署名-禁止演绎 完善中…… TODO 生成可点击的目录 目录 序列化漫 ...

  9. 《码出高效:Java开发手册》第四章学习记录,内容想当的多,前后花了几天的时间才整理好。

    <码出高效:Java开发手册>第四章学习记录,内容想当的多,前后花了几天的时间才整理好. https://naotu.baidu.com/file/e667435a4638cbaa15eb ...

随机推荐

  1. 夺命雷公狗-----React---9--map数据的遍历

    比如我们要实现的是这种效果: 用这种方法来写,她只能写死在哪,没啥意思,所以我们定义一个数据,然后来测试下map方法对她遍历出来的数据 <!DOCTYPE html> <html l ...

  2. sqlyong64位破解

    姓名(Name):cr173 序列号(Code):8d8120df-a5c3-4989-8f47-5afc79c56e7c 或者(OR) 姓名(Name):cr173 序列号(Code):59adfd ...

  3. maven+springMVC+mybatis+mysql详细过程

    1.工程目录 a.在src/main/java文件夹中,新建包cn.springmvc.model(存放javabean), cn.springmvc.dao(存放spring与mybatis连接接口 ...

  4. Javascript图片无缝滚动

    http://www.cnblogs.com/shouce/p/5068787.html

  5. Java中的4种代码块

    一.普通代码块 直接在一个方法中出现的{}就称为普通代码块,例子程序如下: public class CodeDemo01{ public static void main(String[] args ...

  6. QTP vbs学习

    1.helloworld Dim helloworld helloworld = "QTP自动化测试技术导航" mxgbox helloworld   2.显示申明变量 Optio ...

  7. Create and Use Custom Attributes

    http://www.codeproject.com/Articles/1811/Creating-and-Using-Attributes-in-your-NET-applicat Create a ...

  8. MySQL and Postgres command equivalents (mysql vs psql)

    MySQL and Postgres command equivalents (mysql vs psql) 博客分类: Database   From: http://blog.endpoint.c ...

  9. ubuntu常用命令记录集

    1.查找当前目录下包含某字符串的文件 #find ./ -type f |xargs grep "string" 2.查找文件 #find ./ -name filename 3. ...

  10. if 语句运用

    运用if语句完成对年.月.日的判断. Console.WriteLine("其输入年份:"); int a = int.Parse(Console.ReadLine()); Con ...