Tag: hashmap

使用HashMap进行Java内存管理

我正在开发一个应用程序,它将数据库中的大量数据读入Map<String,Map<String,Map>> ,对其进行处理,并使用in将处理后的报告写入电子表格-house xml writer。 整个运行大约需要12个小时。 我发现我得到了 Exception in thread “CursorController-Thread-0” java.lang.OutOfMemoryError: Java heap space at java.lang.AbstractStringBuilder.(AbstractStringBuilder.java:45) at java.lang.StringBuilder.(StringBuilder.java:68) 当我尝试编写这个jumbo文件时。 出于这个原因,我认为最好在完成处理时编写每个Map<String,Map> (注意这是一个更深的层)。 我的问题是,我怎样才能确保Map<String,Map>在我写完后不会保留在内存中,因为Map >>仍然会包含它?

为什么hashmap没有像ArrayList那样的ensureCapacity()方法?

ArrayList和HashMap都有构造函数来设置初始容量, ArrayList提供了ensureCapacity()以确保在预期插入一些大量元素时内部数组已经增加。 在某些情况下, HashMap也会发生同样的情况。 那么为什么HashMap没有一个确保容量方法可以保持桶准备好呢?

如何使用iterator java将JSONObject转换为其所有键的新Map

我有一个JSONObject {“2016”:{“12”:{“20”:{“19”:{“DonationTime”:11111111111,”Donation”:10}}}}} 我想用每个键将它转换为新地图 int i = 0; for (Iterator keysItr = object.keySet().iterator(); keysItr.`hasNext(); i++) { String key = keysItr.next(); Object value = object.get(key); if(value instanceof JSONObject) { value = toMap((JSONObject) value); map.put(key, value); } } SOP(map); //but here i want to get 4 maps } 我想得到4张地图 hourMap[19] = “{“DonationTime”:11111111111,”Donation”:10}”; dayMap[20] = “{“19”:{“DonationTime”:11111111111,”Donation”:10}}”; monthMap[12] = “{“12”:{“20”:{“19”:{“DonationTime”:11111111111,”Donation”:10}}}”; […]

初始化HashMap的最佳方法

我通常会这样做 HashMap dictionary = new HashMap(); 我开始考虑它,据我所知, HashMap是通过哈希表实现的。 使用散列将对象存储在表中,以查找它们应存储在表中的位置。 我没有在dictionary构造上设置大小这一事实是否会降低性能? 即建设期间哈希表的大小是多少? 当元素增加时,是否需要为表分配新内存? 或者我对这里的概念感到困惑? 默认容量和负载是否足够,或者我应该花时间查看实际数字?

Java项目:使HashMap(包括加载 – 存储)性能更好

我正在尝试为我们的服务器编写代码,我必须通过URL查找用户访问类型。 现在,在开始时,我们每天都会看到1亿个不同的URL。 现在,到那时它每天变成近6亿个不同的URL。 对于1亿,我们所做的是: 1)使用并行数组构建HashMap,其键是URL的一部分(表示为LONG),值是URL的其他部分(表示为INT) – 键可以有多个值。 2)然后搜索HashMap以查找访问的URL时间。 现在,随着HashTable变得越来越大,我们所做的就是: 1)构建两个/三个单独的HashTable,并加载和存储它(在通用文件系统上)以查找URL访问的次数。 现在,问题是, 1)虽然HashTable的性能相当不错,但是在加载/存储HashTable时代码需要更多时间(我们使用文件通道,加载/存储HashTable需要16-19秒 – 20000万条入口 – 加载因子为0.5) 我们要问的是: 1)有任何评论如何解决这个问题? 2)如何减少加载/存储时间(我之前问过但似乎文件通道是最好的方法)? 3)存储一个大的HashTable(超过内存)并重复缓存它将是一个很好的解决方案? 如果是这样,怎么做(至少一些指针)。 我们尝试使用 RandomAccessFile raf = new RandomAccessFile(“array.dat”, “rw”); IntBuffer map = raf.getChannel().map(FileChannel.MapMode.READ_WRITE, 0, 1 << 30).order(ByteOrder.nativeOrder()).asIntBuffer(); 然而,比以前更糟糕的表现。 谢谢。 注意: 1)根据Stack Overflow之前的建议,我们使用一些像TokyoCabinet这样的NoSQL DB,但根据我们的经验,自定义HashTable比1亿个键值对提供更好的性能。 2)磁盘缓存的预读数据是不可能的,因为当系统启动时,我们的应用程序将开始工作,并在系统启动的第二天开始工作。 我们忘了提到的是: 1)由于我们的应用程序是项目的一部分并且应用于小型校园,因此我们假设访问的URL不超过8亿。 因此,您可以认为600/700数据值是固定的。 2)我们主要关心的是表现。 3)我们必须在本地运行我们的应用程序。 编辑:我们的hashmap代码可以在这里找到。

Java Hash Multi Map(具有多个值的键)实现

从这里开始 ,我发现Colt的OpenIntIntHashMap和Trove的TIntIntHashMap比Java内置的HashMap或Guava的HashMultimap提供了更好的性能和内存使用。 Colt的OpenIntIntHashMap或Trove的TIntIntHashMap允许具有多个值的键,与HashMultimap ? 如果没有什么是实现可以实现Colt或Trove性能和内存效率的HashMultimap的好方法? 注意:我测试了Guava的HashMultimap ,但它的性能和内存效率对我来说似乎很差。

使用map超过1个深度级别,从csv转换为json

我有一个csv文件,其内容如下: Fruit, Mango Fruit, Apple Car, Audi Apple, Red Color, Brown 我想最终以这样的格式转换它: “hierarchy” : [{ “label”: “Fruit”, “children” : [ {label: “Mango”}, {label: “Apple”, “children”: [ {label:”Red”}]} ] }, { “label” : “Car”, “children” : [ {label: “Audi”} ] }, { “label” : “Color”, “children” : [ {label: “Brown”} ] }] 为此,我在地图中插入了值: StringBuilder sb = […]

如何轻松地将两个hashMap 相加?

我有两个HashMap 我怎样才能轻松总结它们? 意味着对于字符串“a”,键将是(Map1的值+ Map2的值)的总和? 我可以迭代Map2的每个项目并手动添加到Map1。 但是想到可能有一种更简单的方法? 我更喜欢将整数汇总到其中一张地图中。 没有创建一个新的

如何清除对象(HashMap)进行垃圾收集 – Java

所以我在这里有一个java程序,它操纵大量数据并将其存储到对象中(主要是哈希映射)。 在运行时的某个时刻,数据变得无用,我需要丢弃,这样我就可以释放一些内存。 我的问题是丢弃这些数据被垃圾收集的最佳行为是什么? 我已经尝试过map.clear(),但是这还不足以清除地图分配的内存。 编辑 (添加我尝试的替代品) 我也尝试过system.gc()来强制垃圾收集器运行,但它没有帮助

HashSet 的初始容量

我应该为HashSet使用什么初始容量,我知道我将插入1000个整数以防止需要进行任何内部重建? 起初我虽然我应该使用1000但是阅读Constructs a new, empty set; the backing HashMap instance has the specified initial capacity and default load factor (0.75). initialCapacity参数的构造函数的描述,它表示Constructs a new, empty set; the backing HashMap instance has the specified initial capacity and default load factor (0.75). Constructs a new, empty set; the backing HashMap instance has the specified initial capacity and default […]