gpt4 book ai didi

java - 将值分配给Map(Hashmap或Multimap)

转载 作者:行者123 更新时间:2023-11-30 04:23:50 25 4
gpt4 key购买 nike

我有一张 map :

HashMap<String, ArrayList<Integer>> hashmap = new HashMap<String, ArrayList<Integer>>();

从远程数据库服务器检索数据后,我正在创建一个 HashMap :(在 eclipse 中输出)

{newcomer=[23, 78, 118, 155, 240, 244], zoom=[213], profession=[8, 10, 12, 13, 15]}

现在,我担心的是,连接到服务器和下载数据花费了太多时间。数据的大小超出了我的耐心极限。有什么办法,我可以直接将值存储在 Hashmap 变量中(就像我们对普通变量所做的那样,int i =5);

一般来说,我该如何做到这一点(就像我在 Python 中所做的那样):

hashmap = {newcomer=[23, 78, 118, 155, 240, 244], zoom=[213], profession=[8, 10, 12, 13, 15]}

我最近改用 Guava,我也可以做这个 Multimap 吗?我想要分配的值现在是一个字符串,因此分配可能比我想象的要复杂得多。

编辑 1:我需要这个仅用于开发目的。一旦应用程序上线,将重新连接到数据库服务器。

编辑 2:目前我有近 50k 对,因此单独添加不是一个选择。可能,为了开发,我可以将列表削减到 100 项,但这也需要人工来放置每一项。

编辑 3:我知道我们可以想办法更完美地设置数据库以实现快速执行。我只需要弄清楚是否可以分配?否则,我将进行本地设置。

最佳答案

Map 的内联初始化在 Java 中是不可能的。然而,在您的情况下,这并不重要 - 通过代码填充 map 的数据量意味着数小时(或数天)的高度重复且极易出错的手动输入或编写代码生成器:

I have nearly 50k pairs at this moment, hence adding individually is not an option.

无论如何,如果您编写代码生成器,它是否生成内联初始化程序或加载 Map#put() 语句并不重要。

但是,在这种情况下,代码中的代码生成/初始化肯定是一个糟糕的选择。更好的解决方案是(按有用性递减排序):

  • 注意缓慢的数据库设置或未优化的查询(请参阅 CBass 对原始问题的评论)。
  • 请注意仅加载该数据一次,从而减少延迟与整体情况的相关性。
  • 从数据库服务器读取一次,然后将其序列化到文件(请参阅ObjectOutputStream),然后从那里反序列化。
  • 您可以设置本地(快速)数据库服务器并从中读取数据,而不是远程数据库服务器。

我什至不会考虑在代码中初始化这种大小的数据结构,除非上述所有内容都已被证明不起作用。这是极不可能的。

关于java - 将值分配给Map(Hashmap或Multimap),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16358863/

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