CN109471635B - 一种基于Java Set集合实现的算法优化方法 - Google Patents
一种基于Java Set集合实现的算法优化方法 Download PDFInfo
- Publication number
- CN109471635B CN109471635B CN201811019606.4A CN201811019606A CN109471635B CN 109471635 B CN109471635 B CN 109471635B CN 201811019606 A CN201811019606 A CN 201811019606A CN 109471635 B CN109471635 B CN 109471635B
- Authority
- CN
- China
- Prior art keywords
- java
- constructing
- comparison
- internal interface
- hash table
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
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技术领域,具体涉及一种基于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集合实现的算法优化方法,其特征在于,所述对比的策略为先通过元素地址比较,再通过元素值比较。
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 CN109471635A (zh) | 2019-03-15 |
CN109471635B true 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) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111177245A (zh) * | 2019-12-25 | 2020-05-19 | 中国平安财产保险股份有限公司 | Redis集群的键值遍历方法、服务器及存储介质 |
CN113641871B (zh) * | 2021-10-18 | 2022-02-08 | 北京医百科技有限公司 | 一种无锁散列方法、装置、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101873335A (zh) * | 2009-04-24 | 2010-10-27 | 同济大学 | 一种跨域语义Web服务的分布式搜索方法 |
CN103279532A (zh) * | 2013-05-31 | 2013-09-04 | 北京鹏宇成软件技术有限公司 | 多集合元素去重并标识所属集合的过滤系统及其方法 |
CN104850656A (zh) * | 2015-06-05 | 2015-08-19 | 中国信息安全研究院有限公司 | 一种动态自适应多级Bloom滤波器装置 |
CN107391554A (zh) * | 2017-06-07 | 2017-11-24 | 中国人民解放军国防科学技术大学 | 高效分布式局部敏感哈希方法 |
CN108287840A (zh) * | 2017-01-09 | 2018-07-17 | 北京大学 | 一种基于矩阵哈希的数据存储和查询方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9158661B2 (en) * | 2012-02-15 | 2015-10-13 | Apple Inc. | Enhanced debugging for embedded devices |
US9917727B2 (en) * | 2014-06-03 | 2018-03-13 | Nicira, Inc. | Consistent hashing for network traffic dispatching |
CN107870925B (zh) * | 2016-09-26 | 2021-08-20 | 华为技术有限公司 | 一种字符串过滤方法和相关装置 |
CN107391034B (zh) * | 2017-07-07 | 2019-05-10 | 华中科技大学 | 一种基于局部性优化的重复数据检测方法 |
-
2018
- 2018-09-03 CN CN201811019606.4A patent/CN109471635B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101873335A (zh) * | 2009-04-24 | 2010-10-27 | 同济大学 | 一种跨域语义Web服务的分布式搜索方法 |
CN103279532A (zh) * | 2013-05-31 | 2013-09-04 | 北京鹏宇成软件技术有限公司 | 多集合元素去重并标识所属集合的过滤系统及其方法 |
CN104850656A (zh) * | 2015-06-05 | 2015-08-19 | 中国信息安全研究院有限公司 | 一种动态自适应多级Bloom滤波器装置 |
CN108287840A (zh) * | 2017-01-09 | 2018-07-17 | 北京大学 | 一种基于矩阵哈希的数据存储和查询方法 |
CN107391554A (zh) * | 2017-06-07 | 2017-11-24 | 中国人民解放军国防科学技术大学 | 高效分布式局部敏感哈希方法 |
Non-Patent Citations (3)
Title |
---|
Java集合框架分析(七)——自己实现hash表;My_Dream_Go;《https://blog.csdn.net/haoshuo87/article/details/84596758?spm=1001.2014.3001.5501》;20140506;1-7 * |
Rectangular hash table: Bloom filter and bitmap assisted hash table with high speed;Tong Yang; Binchao Yin; Hang Li; Muhammad Shahzad; Steve Uhlig;;《IEEE》;20180115;1-10 * |
具备web数据整合功能的负载均衡系统设计与实现;李世明;《中国优秀硕士学位论文全文数据库 信息科技辑》;20150415(第04期);I139-129 * |
Also Published As
Publication number | Publication date |
---|---|
CN109471635A (zh) | 2019-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103577123B (zh) | 一种基于hdfs的小文件优化存储方法 | |
CN108846133B (zh) | 基于b-m树的区块链存储结构、b-m树建立算法及查找算法 | |
CN108205577B (zh) | 一种数组构建、数组查询的方法、装置及电子设备 | |
CN103051543A (zh) | 一种路由前缀的处理、查找、增加及删除方法 | |
CN106326475B (zh) | 一种高效的静态哈希表实现方法及系统 | |
CN107368527B (zh) | 基于数据流的多属性索引方法 | |
CN104239511B (zh) | 一种面向MongoDB的用户空间文件系统实现方法 | |
CN109471635B (zh) | 一种基于Java Set集合实现的算法优化方法 | |
CN105677683A (zh) | 批量数据查询方法和装置 | |
CN111625534A (zh) | 用于哈希运算的数据结构及基于该结构的哈希表存储、查询方法 | |
EP4111327A1 (en) | Vectorized queues for shortest-path graph searches | |
CN106599091B (zh) | 基于键值存储的rdf图结构存储和索引方法 | |
US20170249218A1 (en) | Data to be backed up in a backup system | |
CN103189867A (zh) | 重复数据检索方法及设备 | |
CN108090125B (zh) | 一种非查询式的重复数据删除方法及装置 | |
CN111522811B (zh) | 数据库的处理方法及装置、存储介质、终端 | |
CN104408163A (zh) | 一种数据分级存储方法和装置 | |
US20170142013A1 (en) | Search apparatus, search configuration method, and search method | |
CN105515997B (zh) | 基于bf_tcam实现零范围扩张的高效范围匹配方法 | |
CN112256821B (zh) | 中文地址补全的方法、装置、设备及存储介质 | |
JP2019091257A (ja) | 情報処理装置、情報処理方法及びプログラム | |
CN105447112A (zh) | 一种实现关系数据库Hash分区高效扩展的方法 | |
US20160275146A1 (en) | Use a parallel hardware search device to implement big databases efficiently | |
CN112256704A (zh) | 一种快速join方法、存储介质及计算机 | |
CN106802927A (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 |