CN109471635A - 一种基于Java Set集合实现的算法优化方法 - Google Patents

一种基于Java Set集合实现的算法优化方法 Download PDF

Info

Publication number
CN109471635A
CN109471635A CN201811019606.4A CN201811019606A CN109471635A CN 109471635 A CN109471635 A CN 109471635A CN 201811019606 A CN201811019606 A CN 201811019606A CN 109471635 A CN109471635 A CN 109471635A
Authority
CN
China
Prior art keywords
java
internal interface
realized based
hash table
algorithm optimization
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811019606.4A
Other languages
English (en)
Other versions
CN109471635B (zh
Inventor
孟彦
章文友
朱静轩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Network Information Security Ltd By Share Ltd
Original Assignee
China Network Information Security Ltd By Share Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Network Information Security Ltd By Share Ltd filed Critical China Network Information Security Ltd By Share Ltd
Priority to CN201811019606.4A priority Critical patent/CN109471635B/zh
Publication of CN109471635A publication Critical patent/CN109471635A/zh
Application granted granted Critical
Publication of CN109471635B publication Critical patent/CN109471635B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明涉及JAVA技术领域,具体涉及一种基于Java Set集合实现的算法优化方法,包括构造set集合并构造set集合中节点的内部类、通过所述内部类构造对象实体的内部接口、在所述内部接口设置存放集合的实际元素、所述内部接口设置所述实际元素的属性值、所述内部接口提供所述实际元素的获取方法、设置方法、比较方法、哈希值获取、构造哈希表、在所述哈希表内存储所述节点的对象、进行元素比较、在set集合的分支下单独再建集合、所述集合通过布隆过滤器进行大量字符串去重。本发明摒弃通过Map实现Set的方法,独立设计完成Set集合元素去重、存储方法,提高java代码的运行效率,降低java源码模块耦合度;单独实现大量字符串去重方法,降低内存使用。

Description

一种基于Java Set集合实现的算法优化方法
技术领域
本发明涉及JAVA技术领域,具体涉及一种基于Java Set集合实现的算法优化方法。
背景技术
Java是当前软件系统研发最热们的编程语言之一,使用者十分庞大,Java Set是java中一种单元素集合,其特点就是元素惟一性。HashSet、inkedHashSet、TreeSet分别是三种Set的具体实现,其中HashSet存储去重方式是通过HashMap实现,TreeSet是通过TreeMap实现,LinkedHashSet是通过LinkedHashMap实现的。Java Set并没有针对于大量的字符元素去重工作时做相应的实际处理。
Java Set是java中一种单元素集合,其特点就是元素惟一性。HashSet、LinkedHashSet、TreeSet分别是三种Set的具体实现,但它们却都是通过Map进行元素去重、存储等操作,这使java两个顶级的接口之间关系错综复杂,而且在做大量的字符元素去重工作时,目前的Set时间效率和空间效率都不是很好,特别是在去重字符串的数量级达到百万以上,会浪费很多内存空间。
发明内容
本发明的目的在于克服现有技术中存在的问题,提供一种基于Java Set集合实现的算法优化方法,它可以实现独立设计完成Set集合元素去重、存储方法,提高java代码的运行效率,降低java源码模块耦合度;单独实现大量字符串去重方法,降低内存使用。
为实现上述技术目的,达到上述技术效果,本发明是通过以下技术方案实现的:
一种基于Java Set集合实现的算法优化方法,包括如下步骤:
步骤1、构造set集合并构造set集合中节点的内部类;
步骤2、通过所述内部类构造对象实体的内部接口;
步骤3、在所述内部接口设置存放集合的实际元素;
步骤4、所述内部接口设置所述实际元素的属性值;
步骤5、所述内部接口提供所述实际元素的获取方法、设置方法、比较方法、哈希值获取;
步骤6、构造哈希表;
步骤7、在所述哈希表内存储所述节点的对象;
步骤8、进行元素比较;
步骤9、在set集合的分支下单独再建集合;
步骤10、所述集合通过布隆过滤器进行大量字符串去重。
进一步地,所述步骤7在所述哈希表内存储所述节点的对象时,所述哈希表通过哈希值从大到小或者从小到达的顺序将所述节点的对象进行存储。
进一步地,所述步骤8进行元素比较时,通过二分法查找的方式进行对比。
进一步地,所述对比策略为先通过元素地址比较,再通过元素值比较。
本发明的有益效果:摒弃通过Map实现Set的方法,独立设计完成Set集合元素去重、存储方法,提高java代码的运行效率,降低java源码模块耦合度;单独实现大量字符串去重方法,降低内存使用。
附图说明
图1为本发明一种基于Java Set集合实现的算法优化方法的流程示意图。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
如图1所示的一种基于Java Set集合实现的算法优化方法,包括如下步骤:
步骤1、构造set集合并构造set集合中节点的内部类,具体可以通过HashSet、TreeSet等集合实现set集合;
步骤2、通过所述内部类构造对象实体的内部接口;
步骤3、在所述内部接口设置存放集合的实际元素;
步骤4、所述内部接口设置所述实际元素的属性值;
步骤5、所述内部接口提供所述实际元素的获取方法、设置方法、比较方法、哈希值获取;
步骤6、构造哈希表;
步骤7、在所述哈希表内存储所述节点的对象;
步骤8、进行元素比较;
步骤9、在set集合的分支下单独再建集合;
步骤10、所述集合通过布隆过滤器进行大量字符串去重,按照布隆过滤器算法,重写contains方法和add方法,算法原理如下:布隆过滤器是一种多哈希函数映射的快速查找算法,它实际上是由一个很长的二进制向量和一系列随机映射函数组成,一个空的布隆过滤器是一个m位的位数组,所有位的值都为0,定义了k个不同的符合均匀随机分布的哈希函数,每个函数把集合元素映射到位数组的m位中的某一位,添加一个元素,先把这个元素作为k个哈希函数的输入,拿到k个数组位置,然后把所有的这些位置置为1,查询一个元素,把这个元素作为k个哈希函数的输入,得到k个数组位置,这些位置中只要有任意一个是0,元素肯定不在这个集合里,如果元素在集合里,那么这些位置在插入这个元素时都被置为1了。
所述步骤7在所述哈希表内存储所述节点的对象时,所述哈希表通过哈希值从大到小或者从小到达的顺序将所述节点的对象进行存储,便于快速对比,提高对比效率。
所述步骤8进行元素比较时,通过二分法查找的方式进行对比,所述二分法查找方式为不断将数组进行对半分割,每次拿中间元素和目标元素进行比较。
具体对比策略为先通过元素地址比较,再通过元素值比较。
以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。

Claims (4)

1.一种基于Java Set集合实现的算法优化方法,其特征在于,包括如下步骤:
步骤1、构造set集合并构造set集合中节点的内部类;
步骤2、通过所述内部类构造对象实体的内部接口;
步骤3、在所述内部接口设置存放集合的实际元素;
步骤4、所述内部接口设置所述实际元素的属性值;
步骤5、所述内部接口提供所述实际元素的获取方法、设置方法、比较方法、哈希值获取;
步骤6、构造哈希表;
步骤7、在所述哈希表内存储所述节点的对象;
步骤8、进行元素比较;
步骤9、在set集合的分支下单独再建集合;
步骤10、所述集合通过布隆过滤器进行大量字符串去重。
2.根据权利要求1所述的一种基于Java Set集合实现的算法优化方法,其特征在于,所述步骤7在所述哈希表内存储所述节点的对象时,所述哈希表通过哈希值从大到小或者从小到达的顺序将所述节点的对象进行存储。
3.根据权利要求1所述的一种基于Java Set集合实现的算法优化方法,其特征在于,所述步骤8进行元素比较时,通过二分法查找的方式进行对比。
4.根据权利要求3所述的一种基于Java Set集合实现的算法优化方法,其特征在于,所述对比策略为先通过元素地址比较,再通过元素值比较。
CN201811019606.4A 2018-09-03 2018-09-03 一种基于Java Set集合实现的算法优化方法 Active CN109471635B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811019606.4A CN109471635B (zh) 2018-09-03 2018-09-03 一种基于Java Set集合实现的算法优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811019606.4A CN109471635B (zh) 2018-09-03 2018-09-03 一种基于Java Set集合实现的算法优化方法

Publications (2)

Publication Number Publication Date
CN109471635A true CN109471635A (zh) 2019-03-15
CN109471635B CN109471635B (zh) 2021-09-17

Family

ID=65660093

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811019606.4A Active CN109471635B (zh) 2018-09-03 2018-09-03 一种基于Java Set集合实现的算法优化方法

Country Status (1)

Country Link
CN (1) CN109471635B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111177245A (zh) * 2019-12-25 2020-05-19 中国平安财产保险股份有限公司 Redis集群的键值遍历方法、服务器及存储介质
CN113641871A (zh) * 2021-10-18 2021-11-12 北京医百科技有限公司 一种无锁散列方法、装置、设备及介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101873335A (zh) * 2009-04-24 2010-10-27 同济大学 一种跨域语义Web服务的分布式搜索方法
US20130212425A1 (en) * 2012-02-15 2013-08-15 Russell A. Blaine Enhanced debugging for embedded devices
CN103279532A (zh) * 2013-05-31 2013-09-04 北京鹏宇成软件技术有限公司 多集合元素去重并标识所属集合的过滤系统及其方法
CN104850656A (zh) * 2015-06-05 2015-08-19 中国信息安全研究院有限公司 一种动态自适应多级Bloom滤波器装置
CN107391034A (zh) * 2017-07-07 2017-11-24 华中科技大学 一种基于局部性优化的重复数据检测方法
CN107391554A (zh) * 2017-06-07 2017-11-24 中国人民解放军国防科学技术大学 高效分布式局部敏感哈希方法
CN107870925A (zh) * 2016-09-26 2018-04-03 华为技术有限公司 一种字符串过滤方法和相关装置
US20180198679A1 (en) * 2014-06-03 2018-07-12 Nicira, Inc. Consistent hashing for network traffic dispatching
CN108287840A (zh) * 2017-01-09 2018-07-17 北京大学 一种基于矩阵哈希的数据存储和查询方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101873335A (zh) * 2009-04-24 2010-10-27 同济大学 一种跨域语义Web服务的分布式搜索方法
US20130212425A1 (en) * 2012-02-15 2013-08-15 Russell A. Blaine Enhanced debugging for embedded devices
CN103279532A (zh) * 2013-05-31 2013-09-04 北京鹏宇成软件技术有限公司 多集合元素去重并标识所属集合的过滤系统及其方法
US20180198679A1 (en) * 2014-06-03 2018-07-12 Nicira, Inc. Consistent hashing for network traffic dispatching
CN104850656A (zh) * 2015-06-05 2015-08-19 中国信息安全研究院有限公司 一种动态自适应多级Bloom滤波器装置
CN107870925A (zh) * 2016-09-26 2018-04-03 华为技术有限公司 一种字符串过滤方法和相关装置
CN108287840A (zh) * 2017-01-09 2018-07-17 北京大学 一种基于矩阵哈希的数据存储和查询方法
CN107391554A (zh) * 2017-06-07 2017-11-24 中国人民解放军国防科学技术大学 高效分布式局部敏感哈希方法
CN107391034A (zh) * 2017-07-07 2017-11-24 华中科技大学 一种基于局部性优化的重复数据检测方法

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
HYESOOK LIM等: "Complement Bloom Filter for Identifying True Positiveness of a Bloom Filter", 《IEEE》 *
MY_DREAM_GO: "Java集合框架分析(七)——自己实现hash表", 《HTTPS://BLOG.CSDN.NET/HAOSHUO87/ARTICLE/DETAILS/84596758?SPM=1001.2014.3001.5501》 *
MY_DREAM_GO: "Java集合框架分析(八)——从哈希到布隆过滤器", 《HTTPS://BLOG.CSDN.NET/HAOSHUO87/ARTICLE/DETAILS/84597056》 *
TONG YANG; BINCHAO YIN; HANG LI; MUHAMMAD SHAHZAD; STEVE UHLIG;: "Rectangular hash table: Bloom filter and bitmap assisted hash table with high speed", 《IEEE》 *
周炳: "海量数据的重复数据删除中元数据管理关键技术研究", 《中国博士学位论文全文数据库 信息科技辑》 *
李世明: "具备web数据整合功能的负载均衡系统设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111177245A (zh) * 2019-12-25 2020-05-19 中国平安财产保险股份有限公司 Redis集群的键值遍历方法、服务器及存储介质
CN113641871A (zh) * 2021-10-18 2021-11-12 北京医百科技有限公司 一种无锁散列方法、装置、设备及介质
CN113641871B (zh) * 2021-10-18 2022-02-08 北京医百科技有限公司 一种无锁散列方法、装置、设备及介质

Also Published As

Publication number Publication date
CN109471635B (zh) 2021-09-17

Similar Documents

Publication Publication Date Title
CN103873371B (zh) 一种名字路由快速匹配查找方法与装置
CN108205577B (zh) 一种数组构建、数组查询的方法、装置及电子设备
US10164884B2 (en) Search apparatus, search configuration method, and search method
CN108846133B (zh) 基于b-m树的区块链存储结构、b-m树建立算法及查找算法
CN107330047B (zh) 一种基于完美哈希算法的fpga训练及查询电路实现方法
CN101577662A (zh) 一种基于树形数据结构的最长前缀匹配方法和装置
CN109471635A (zh) 一种基于Java Set集合实现的算法优化方法
CN103051543A (zh) 一种路由前缀的处理、查找、增加及删除方法
CN105677683A (zh) 批量数据查询方法和装置
CN102484610A (zh) 路由表建立方法和装置及路由表查找方法和装置
CN104809135A (zh) 一种数据存取方法及装置
CN112988761B (zh) 区块链数据存储方法及装置、电子设备
CN102567419B (zh) 基于树结构的海量数据存储装置及方法
CN115221176A (zh) 区块链数据存储方法及装置、电子设备
CN105574076B (zh) 一种基于Bloom Filter的键值对存储结构及方法
CN108717448B (zh) 一种面向键值对存储的范围查询过滤方法和键值对存储系统
WO2015192742A1 (zh) 一种查找装置、查找方法和配置方法
CN103077198A (zh) 一种操作系统及其文件缓存定位方法
CN105264519A (zh) 一种列式数据库处理方法及装置
CN109918074B (zh) 编译链接优化方法
CN107294855B (zh) 一种高性能计算网络下的tcp查找优化方法
CN107315801B (zh) 并行离散事件仿真系统初始化数据存储方法
CN110083603B (zh) 一种基于邻接表实现节点路径的查询方法及系统
CN105812258B (zh) 一种数据处理方法和装置
CN114448890B (zh) 寻址方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant