簡體   English   中英

Java:如何初始化和填充最終的靜態有序Map?

[英]Java: How to initialize and fill final static ordered Map?

我在Java中有一個詞干算法,它需要一個靜態的最終HashMap<String, String>預先填充大約30 000條記錄。

我需要地圖按照插入的順序保存記錄(我得到一個提示,我可以使用LinkedHashMap ?)。

我以為我可以在Java類文件中手動插入值,因為這是在RAM中加載它們的最快方法(時間/生產力對於這個項目非常重要),通過使用30 000個調用

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

問題是,java(或至少eclipse)在任何段/方法等中只允許65kb的代碼。所以我最終擴展了11個類,並在構造函數或static { }放入了65kb的.put

一切都很好,但是當我運行它時,訂單就被打亂了。 對於這么多行,我無法在擴展順序或地圖中跟蹤出錯的地方。

那么,請告訴我你在java中填寫最終地圖的最佳方式是什么。

PS:從文件加載和解析記錄太慢了......

一切都很好,但是當我運行它時,訂單就被打亂了。 對於這么多行,我無法在擴展順序或地圖中跟蹤出錯的地方。

a)HashMap不保留插入順序。 請改用LinkedHashMap 或者,因為您將其用作常量,請考慮使用Guava ImmutableMap 它保留插入oder,是不可變的,並提供了一個構建器對象,用於構造具有許多值的構造對象。

b)

PS:從文件加載記錄太慢了......

為什么? 在課堂加載期間,它只會完成一次。 35K字符串/字符串對實際上並不是現代機器的大量數據。

您是否考慮在內存數據庫中使用?(例如HSQLDB)看起來沒有預先填充包含這么多數據的類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM