当前位置: 首页 > 知识库问答 >
问题:

将元素添加到Java中HashMap的ArrayList中的a HashMap中

陆雅志
2023-03-14

我在Java有一个源HashMap:

HashMap<String, Integer> keyWordFrequencies;

存储各种长度的关键字。我想遍历这个HashMap并计算出存储在映射的字符串部分中的ngram的长度,该字符串部分定义了每个关键字的文本。

使用这些数据,我想填充一个HashMaps的目标ArrayList:

ArrayList<HashMap<String, Integer>> keywordNgrams;

结果是,ArrayList的索引对应于给定关键字的ngram大小减去1,即keywordNGrams(0)将接收unigrams,keywordNGrams(1)将接收bigrams,以此类推。但我不确定必要的语法。遍历源HashMap非常容易:

Set keyWordFrequenciesSet = keyWordFrequencies.entrySet();
Iterator keyWordFrequenciesIterator = keyWordFrequenciesSet.iterator();
while(keyWordFrequenciesIterator.hasNext()) {
   Map.Entry m = (Map.Entry) keyWordFrequenciesIteratorIterator.next();
   int ngramLength = String_Utils.getLengthOfNgram(m.getKey().toString());

   Add element to keywordNgrams?

但是将元素添加到HashMap的目标ArrayList中会让我感到困惑。我试过:

keywordNgrams.add(ngramLength, m);

和各种备选办法,但都是徒劳的。m应该是HashMap的元素,而不是HashMap本身。谁能指出我错在哪里?

理想情况下,我希望遍历源HashMap KeywordFrequences一次,并将keywordNgrams ArrayList初始化为尽可能大的ngram大小。

共有1个答案

须原
2023-03-14

既然您知道最大的ngram大小,我建议预填充keywordngrams:

List<Map<String, Integer>> keywordNgrams =
    new ArrayList<Map<String, Integer>>();
for(int i = 0; i < 5; ++i)
    keywordNgrams.add(new HashMap<String, Integer>());

然后你可以写:

for(final String keyword : keyWordFrequencies.keySet())
    keywordNgrams.get(String_Utils.getLengthOfNgram(keyword) - 1)
            .put(keyword, keyWordFrequencies.get(keyword));
 类似资料:
  • 所以我有一个看起来像这样的文件: 其中我希望第一列是hashmap的键(e1,或e2,或e3),值是一个名为“ratings”的ArrayList,我希望第二列的值(int)位于ArrayList的第n个索引中。 总而言之:文件第一列中的每个字符串在hashmap(userList)中都有自己的键,程序将检查它是否有这个键,如果没有键,它将创建一个新的arraylist作为这个键的值。arrayL

  • 在java中,我试图添加一对相加到一定数量的数组,我尝试的方法之一是在HashMap中创建一个双ArrayList。如果我在列表中添加1和2,我将得到3作为键。例如: 输出如下所示 如果我再加一对 但是我一直得到一个'方法不适用于HashMap类型 我也试过了 我想我可能需要先初始化更大的矩阵,但遗憾的是,我最终还是出现了同样的错误。

  • 我想在java中创建一个哈希表类,将键和值对存储在链表的ArrayList中 然后,我想创建一个链接列表对象,然后可以使用该对象在arrayList的每个索引内创建一个新的链接列表。为此,我声明: 然后我设置了add函数以将元素添加到LinkedList的第一个索引中,该索引位于arrayList的哈希键索引中: 每次运行此代码时,我都会收到一个错误,其中我的索引为7而我的大小为0。这会导致错误:

  • 问题内容: 我正在尝试将元素添加到python中的json文件中,但我无法做到这一点。 这是我直到现在尝试的内容(删除了一些变化): 但是,我得到的是: 很好,因为我还需要添加一个新行而不是一个元素,但是我想得到这样的东西: 我应该如何添加新元素? 问题答案: 你可以这样做。

  • 问题内容: 我有一个单击按钮时执行的功能。假设有一个循环将1到10加到。我将该数据添加到中。它完美地工作,并且数字相加。然后我在循环中添加了一个。但是输出是不同的。我想每秒增加1个元素。但是现在它等待10秒,并在第10秒结束时将所有1到10加在一起。我在哪里错了? 问题答案: 您应该在单独的线程中更新列表,否则最终将阻塞事件分发线程。 请尝试以下操作:

  • 问题内容: 我有一个要通过for循环添加元素的arraylist。 编辑:如果我有50个Answer元素,该怎么办? 问题答案: 您无法以尝试的方式进行操作……您可能可以执行以下操作: