我有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的第二个元素,依此类推。两个列表的大小始终相同。
有人可以帮我解决这个问题吗?
从地图
使用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()};
}
来自两个列表:
使用for-i
循环
for (int i = 0; i < keyWords.size(); i++) {
data[i] = new Object[]{keyWords.get(i), valueFrequency.get(i)};
}