优点:时间复杂度为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. oauth协议

    微博 : 新浪 腾讯 OAuth 新浪微博   APP开发 步骤:1.注册新浪开发者账号 获取以下信息 client_id  123456  标示应用身份的  唯一的  有的也叫App Key sec ...

  2. Linux操作系统备份之一:使用LVM快照实现Linux操作系统数据的在线备份

    这里我们讨论Linux操作系统的备份. 在生产环境,客户都会要求做全系统的数据备份,用于系统崩溃后的一种恢复手段.这其中就包含操作系统数据的备份恢复. 由于是生产环境,客户都会要求备份不中断业务,也就 ...

  3. -XX:PermSize -XX:MaxPermSize 永久区参数设置

    -XX:PermSize  -XX:MaxPermSize   –设置永久区的初始空间和最大空间 -XX:PermSize 设置持久代(perm gen)初始值,物理内存的1/64 -XX:MaxPe ...

  4. html5,实例开发代码

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  5. web移动前端的click点透问题

    在移动端开发中,有时会出现click点透的问题. 一.什么是click点透 以下情况,在B元素上有半透明红色遮盖层A,黄色B元素内有可点击链接C. tips:以下举例仅针对webkit内核浏览器,所有 ...

  6. 通过Trainingkit对Azure有一个初步的了解

    学习Azure有一个非常不错的资料库Azure training kit. 这里面包含了很多Azure团队编写的实例代码,以及为初学Azure的开发人员准备的新手教学课程. 开发人员可以从http:/ ...

  7. xib中的view对iPhone和iPad自适应

    1 This worked for me: Make a copy of the .xib in the Finder.    Open the copied file in a text edito ...

  8. 二叉查找树的Java实现

    为了克服对树结构编程的恐惧感,决心自己实现一遍二叉查找树,以便掌握关于树结构编程的一些技巧和方法.以下是基本思路: [1] 关于容器与封装.封装,是一种非常重要的系统设计思想:无论是面向过程的函数,还 ...

  9. Going from u to v or from v to u?_POJ2762强连通+并查集缩点+拓扑排序

         Going from u to v or from v to u? Time Limit: 2000MS   Memory Limit: 65536K       Description I ...

  10. [poj2528] Mayor's posters (线段树+离散化)

    线段树 + 离散化 Description The citizens of Bytetown, AB, could not stand that the candidates in the mayor ...