gpt4 book ai didi

Java:如何初始化和填充最终的静态有序 map ?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:31:56 24 4
gpt4 key购买 nike

我在 Java 中有一个词干提取算法,它需要一个 static final HashMap<String, String>预填充了大约 30 000 条记录。

我需要 map 按照插入的顺序保存记录(我得到提示我可以使用 LinkedHashMap ?)。

我想我可以在 Java 类文件中手动插入这些值,因为这是将它们加载到 RAM 中的最快方法(时间/生产力对于这个项目非常重要),方法是使用 30 000 次调用,例如

map.put("Key", "Value");

问题是,java(或至少 eclipse)在任何段/方法等中只允许 65kb 的代码。所以我最终扩展了 11 个类并放置了 65kb 的 .put。 s 在构造函数或 static { } 中.

一切都很好,但是当我运行它时,顺序被打乱了。对于如此多的行,我无法在扩展顺序或 map 中跟踪哪里出了问题。

那么,请告诉我在性能方面您用 Java 填充最终 map 的最佳方式是什么。

P.S.:从文件加载和解析记录太慢了......

最佳答案

Everything was fine, but when I run it the order is scrambled. For so many rows I cannot track where did things go wrong, in the extending order or in the map.

a) HashMap 不保留插入顺序。使用 LinkedHashMap反而。或者,由于您将把它用作常量,考虑一个 Guava ImmutableMap .它保留了插入顺序,是不可变的,并提供了一个构建器对象,用于用许多值构造它。

二)

P.S.: Loading the records from a file is far too slow...

为什么?它只会在类加载期间完成一次。 35K 字符串/字符串对对于现代机器来说确实不是很多数据。

关于Java:如何初始化和填充最终的静态有序 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9558857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com