jjzjj

java - 在 Java 中处理大型字符串列表

我有一项任务,我必须遍历数十亿行字符串并检查每行是否都是唯一的。PC的RAM内存中无法容纳所有行本身。此外,行数可能大于Integer.MAX_VALUE。我假设处理这种数据量的最佳方法是将每个字符串的哈希码放入某种哈希表中。所以,这是我的问题:我应该用什么代替String.hashCode()?(返回值为int,但我可能需要long)处理这种规模的列表的最快方法/框架是什么?我最需要的是能够快速检查列表是否包含元素 最佳答案 你想多了,这一切都可以用一个MySQL表非常简单地完成,该表将数据保存到磁盘而不是将所有内容都保存在内存中

java - 当您知道 HashSet 中最大可能的元素数时,应该使用什么加载因子

当我真正知道HashSet中最大可能的元素数时,我应该使用什么加载因子?我听说建议使用默认负载因子0.75,因为它在速度和空间之间提供了良好的性能权衡。这个对吗?然而,更大的HashSet也会花费更多的创建时间和更多的空间。我使用HashSet只是为了从整数列表中删除重复的整数。 最佳答案 我曾花一些时间研究负载因子,令人震惊的是,该设置在实践中的实际差异如此之小。即使将它设置为像2.0这样的高值也不会减慢速度,也不会节省那么多内存。就当它不存在吧。Josh常常后悔将其作为一种选择公开。

【数据结构】HashSet的底层数据结构

🐌个人主页:🐌叶落闲庭💨我的专栏:💨c语言数据结构javaEE操作系统Redis石可破也,而不可夺坚;丹可磨也,而不可夺赤。HashSet一、HashSet集合的底层数据结构二、HashSet添加元素的过程三、HashSet为什么存和取的顺序不一样四、HashSet为什么没有索引五、HashSet的去重机制Set系列集合无序:存取顺序不一致不重复:可以去除重复无索引:没有带索引的方法,所以不能使用普通fo循环遍历,也不能通过索引来获取元素一、HashSet集合的底层数据结构HashSet:无序、不重复、无索引HashSet底层是采用哈希表存储数据的,哈希表是一种对于增删改查数据性能都较好的结构

java - 了解从 HashSet 生成的流中元素的顺序

我读了这个Java8官方文档:Streamsmayormaynothaveadefinedencounterorder.Whetherornotastreamhasanencounterorderdependsonthesourceandtheintermediateoperations.Certainstreamsources(suchasListorarrays)areintrinsicallyordered,whereasothers(suchasHashSet)arenot.Ifastreamisordered,repeatedexecutionofidenticalstrea

java - HashSet 如何处理 hashCode()?

我试图更深入地理解java.util.Collection和java.util.Map但我对HashSet的功能有一些疑问:在文档中,它说:这个类实现了Set接口(interface),由哈希表(实际上是一个HashMap实例)支持。好的,所以我可以看到HashSet总是有一个Hashtable工作在后台。哈希表是一种结构,每次你想向它添加一个新元素时,它都会要求一个键和一个值。然后,根据key的hashCode将value和key存入一个bucket中。如果两个键的哈希码相同,则它们使用链表将两个键值添加到同一个桶中。如果我说错了,请纠正我。所以,我的问题是:如果HashSet始终有

java - TreeSet/TreeMap 等同于 HashSet/HashMap(自定义哈希)

TreeSet有一个带有比较器的构造函数,这意味着即使您存储的对象不是Comparable对象本身,您可以提供自定义比较器。有无序集的类似实现吗?(例如HashSet的替代方案采用“散列器”对象计算可能与对象自身实现不同的对象T的equals()和hashCode()?)C++std::hash_set给你这个,只是想知道是否有Java的东西。编辑:@Max提出了关于equals()的一个很好的技术观点-很公平;TreeMap也是如此和HashMap键通过Map.containsKey().但是是否还有其他众所周知的数据结构允许通过自定义散列器进行组织? 最

java - 为什么你可以拥有该类对象的 HashSet

我正在努力理解为什么这是可能的。我是一个Java新手,不明白如何让任何类型(列表或集合)的集合成为Example类型。我正在努力理解它的递归性质以及使用它的原因。classExample{privateSetsetExample;//....} 最佳答案 一个对象可以包含对同一类的其他对象的引用。它甚至可以包含对自身的引用(尽管在某些情况下这可能会导致问题)。至于为什么要使用它-现实生活中的对象可以(并且经常)与同一类型的其他对象相关联。一个人与其他人(他们的家庭成员)相关,一个网页可以引用与其相关的其他网页,等等......此类引

Java : HashSet vs. 哈希表

我有一个处理大量数据集的程序。对象最好存储在哈希实现的容器中,因为程序会不断在容器中寻找对象。第一个想法是使用HashMap,因为这个容器的get和remove方法更适合我需要的用途。但是,我发现HashMap的使用非常消耗内存,这是一个主要问题,所以我认为切换到HashSet会更好,因为它只使用,而不是每个元素,但是当我查看实现时,我了解到它使用底层HashMap!这意味着它不会节省任何内存!所以这是我的问题:我所有的假设都是正确的吗?HashMap内存浪费吗?更具体地说,每个条目的开销是多少?HashSet和HashMap一样浪费吗?是否有任何其他基于Hash的容器会显着减少内存消

java - HashSet 允许重复

我似乎无法让HashSet实例按预期工作。我使用的代码如下:importtesting.Subclass;importjava.util.HashSet;publicclasstester{publicstaticvoidmain(String[]args)throwsException{HashSetset=newHashSet();set.add(newSubclass("007812"));set.add(newSubclass("007813"));System.out.println("Setsize"+set.size());set.add(newSubclass("007

【java数据结构】HashMap和HashSet

目录一.认识哈希表:1.1什么是哈希表?1.2哈希表的表示: 1.3常见哈希函数: 二.认识HashMap和HashSet:2.1关于Map.Entry的说明:,>2.2Map常用方法说明:2.3HashMap的使用案例:2.4Set常见方法说明: 2.5HashSet使用案例:源码:一.认识哈希表:1.1什么是哈希表?之前的学习中,如果我们要查找一个元素,肯定是要经过比较的,那有没有一种办法,可以不用经过比较,直接就能拿到呢?如果我们能构造一种存储结构,通过一种函数(hashFunc)使元素的存储位置与函数得出的关键码之间能够建立一一映射的关系,那么在查找某个元素的时候,就能通过这个函数来很