gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:21:14 27 4
gpt4 key购买 nike

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

我从映射中添加了两个单独列表中的键和值:

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 中。现在我想通过在第一个位置(在我们的例子中为“James”)添加列表 keyWords 的第一个元素和数字(在我们的例子中为数字 3)列表 valueFrequency 的第一个元素来动态地实现相同的效果。现在将列表 keyWords 的第二个元素添加到“Hello”位置,将列表 veluueFrequency 的第二个元素添加到数字 2 的位置,依此类推。两个列表的大小始终相同。

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

最佳答案

  1. 从 map 上看

    • 使用

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

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

    • 使用

      Object[][] data = IntStream.range(0, keyWords.size())
      .mapToObj(i -> new Object[]{keyWords.get(i), valueFrequency.get(i)})
      .toArray(Object[][]::new);
    • 使用Guava Streams

      Object[][] data = Streams.zip(keyWords.stream(), valueFrequency.stream(), (s, l) -> new Object[]{s, l})
      .toArray(Object[][]::new);
    • 使用for-i循环

      Object[][] data = new Object[keyWords.size()][];
      for (int i = 0; i < keyWords.size(); i++) {
      data[i] = new Object[]{keyWords.get(i), valueFrequency.get(i)};
      }

关于java - 如何将两个单独的列表添加到二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58679381/

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