jjzjj

java - HashSet vs ArrayList CPU 使用率高

我有104k个字符串值,其中89k个是唯一的。我想检查这个列表中是否存在一个字符串。这是我的类及其保存所有这些记录的方法。publicclassTestClass{privatestaticTestClasssingletonObj=null;privateListstringList=null;publicstaticsynchronizedTestClassgetInstance(){if(singletonObj==null){singletonObj=newTestClass();}returnsingletonObj;}publicbooleanisValidString(S

Java:基于磁盘的快速哈希集

我需要存储一个大哈希集,能够包含多达大约2亿个40位值。将其存储为2亿个64位值是可以接受的(尽管有2亿*16位丢失)。要求是:微小的内存占用(磁盘空间不是问题,内存才是)快速contains(longl)和add(longl)方法(比SQL快得多)嵌入式免费且没有令人讨厌的许可(没有BerkeleyDB)。LGPL很好。没有误报也没有漏报,所以像基于磁盘的布隆过滤器这样的东西不是我想要的SQL不是我在这里追求的东西。因为我真的认为我更追求像这样的快速(请注意该解决方案比SQL解决方案快得多):Fastdisk-basedhashtables?Google有这样的JavaAPI吗?在我

java - 由于新的 HashSet,Spring Hibernate StaleObjectStateException?

我的代码在很长一段时间内都运行良好,但经过几次重构后,我发现我突然无法再保存Group对象了。我遇到了可怕的Rowwasupdatedordeletedbyanothertransaction(orunsaved-valuemappingwasincorrect)错误。在谷歌搜索之后,我当然找到了thisStackOverflowquestion,但它对我没有任何帮助,因为我没有同时做任何事情。经过我的重构后,我发现的唯一区别就是这个变化。之前是:finalCollectionallByBarcode=sampleService.byBarcode(groupRequest.getSa

java - 在不循环的情况下随机获取 HashMap 或 HashSet 中的元素

我需要将大约420,000个元素轻松存储在某种集合或列表中。但限制是我需要能够选择一个随机元素并且它需要很快。最初我使用了一个ArrayList和一个LinkedList,但是有那么多元素,速度非常慢。当我分析它时,我看到我存储的对象中的equals()方法在很短的时间内被调用了大约2100万次。接下来我尝试了一个HashSet。我在性能上获得了什么,却在功能上失去了:我不能选择一个随机元素。HashSet由HashMap支持,而HashMap由一组HashMap.Entry对象支持。然而,当我试图公开它们时,我被整个Java集合框架疯狂的私有(private)和包私有(private

java - 名称冲突 : The method add(Object) of type test2 has the same erasure as add(E) of type HashSet<E> but does not override it

导入java.util.*;classAextendsHashSet{publicbooleanadd(Objectobj){//compilererrorreturntrue;}}orclassAbc{publicvoidadd(Tt){}//compilererrorpublicvoidadd(Objecti){}//compilererror(can'toverload?)}错误:名称冲突:test2类型的方法add(Object)与HashSet类型的add(E)具有相同的删除,但没有覆盖它我不知道上述错误背后的概念是什么,有人可以建议我在哪里可以研究这个概念吗?

Java HashMap 和 HashSet 的高效使用技巧

JavaHashMapHashMap是一种哈希表,它存储键值对。键用于查找值,就像数组中的索引一样。HashMap的优势在于它可以使用任何类型作为键,并且查找速度很快。创建HashMap//导入HashMap类importjava.util.HashMap;publicclassMain{publicstaticvoidmain(String[]args){//创建一个名为capitalCities的HashMap对象,将存储String键和String值HashMapcapitalCities=newHashMap();}}添加项目//添加键和值(国家,城市)capitalCities.pu

java - 将具有相同值的数组添加到 HashSet 会导致重复项

我正在尝试创建一组整数数组,问题是如果我尝试这样做:HashSets=newHashSet();inta1[]={1,2,3};inta2[]={1,2,3};s.add(a1);s.add(a2)System.out.println(s.size());那么s有两个对象,但应该只有一个。注意:是不是HashSet也没关系。它就是行不通。现在,如果我尝试使用ArrayList执行此操作,则类似于:HashSet>s=newHashSet>();ArrayLista1=newArrayList();ArrayLista2=newArrayList();a1.add(1);a1.add(2

HashSet 或其他实现的 Java 变量类型集合?

我经常看到类似Listlist=newArrayList();的声明或Setset=newHashSet();对于类中的字段。对我来说,使用变量类型的接口(interface)来提供实现的灵active是非常有意义的。上面的例子仍然定义了哪种Collection必须分别使用s,分别允许哪些操作以及在某些情况下它应该如何表现(由于文档)。现在考虑实际上只有Collection的功能的情况。(甚至Iterable)接口(interface)需要使用类中的字段和Collection的种类实际上并不重要,或者我不想过度指定它。所以我选择例如HashSet作为实现并将该字段声明为Collecti

java - 我应该放弃 java.util.HashSet 以支持 CompactHashSet 吗?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭8年前。Improvethisquestion我发现有一个使用散列的Set的实现(具有所有有用的结果,例如contains()等的O(1)等)声称在各个方面都比java.util.HashSet更高效:http://ontopia.wordpress.com/2009/09/23/a-faster-and-more-compact-set/http://alias-i.com/lingpipe/docs/api/com/aliasi/

java - 对于非常大的数据集,我应该使用 `HashSet` 还是 `TreeSet`?

我需要在数据结构中存储2到1500万个帐户(这是一个长度为15的String),用于查找目的和检查唯一性。最初我计划将它们存储在HashSet中,但我怀疑查找速度会因为哈希冲突而变慢,最终会比TreeMap(使用二分查找)慢。不需要对数据进行排序。我正在使用Java7。我有64G系统,其中48G专用于此应用程序。这个问题不是HashSetandTreeSetperformancetest的重复问题因为这个问题是关于将元素添加到Set的性能,而这个问题是关于检查现有Set的性能重复值。 最佳答案 如果您有48GB的专用内存来存储200