如何将两个单独的列表添加到二维数组?

问题描述 投票:0回答:1

我有2个列表,我想按特定顺序将数据添加到2维数组中,以成功在JTable中显示数据。这就是我初始化JTable的方式:table = new JTable(data, columnNames);数据变量是二维数组,columnNames是固定的,不能考虑。

我从Map中添加了一个密钥,分别位于2个单独的列表中:

List<String> keyWords = new ArrayList<String>();
List<Long> valueFrequency = new ArrayList<Long>();
for (Map.Entry<String,Long> entry : counts.entrySet()) 
{
    keyWords.add(entry.getKey());
    valueFrequency.add(entry.getValue());
}

这按预期工作!

现在数据变量应如下所示(示例)Object[][] data = {{"James", 3}, {"Hello", 2}};。当我像这样硬编码时,这些元素将按预期在Jtable中显示。现在,我要动态地通过将列表keyWords的第一个元素添加到第一个位置(在我们的例子中为“ James”)中,并为列表中的valueFrequency的第一个元素(在我们的示例中为3)添加数字。现在,在“ Hello”位置添加列表keyWords的第二个元素,在数字2位置添加列表velueFrequency的第二个元素,依此类推。两个列表的大小始终相同。

有人可以帮我解决这个问题吗?

java
1个回答
0
投票
  1. 从地图

    • 使用Streams

      Object[][] data = counts.entrySet()
                              .stream().map(e -> new Object[]{e.getKey(),e.getValue()})
                              .toArray(Object[][]::new);
      
    • 使用for-i循环

      int i = 0;
      for (Map.Entry<String, Long> entry : counts.entrySet()) {
          data[i++] = new Object[]{entry.getKey(), entry.getValue()};
      }
      
  2. 来自两个列表:

    • 使用for-i循环

      for (int i = 0; i < keyWords.size(); i++) {
          data[i] = new Object[]{keyWords.get(i), valueFrequency.get(i)};
      }
      
© www.soinside.com 2019 - 2024. All rights reserved.