![](/img/trans.png)
[英]Accessing data from an Arraylist stored in an Arraylist - Java
[英]Accessing Data From ArrayList
我正在使用动态行和列动态填充列表并在 UI 中显示它们。 一切都已准确完成,但我无法从指定的行和列中获取值,例如第 4 行和第 3 列。代码如下:-
public LiveRangeService() {
tableData = new ArrayList< Map<String, ColumnModel> >();
//Generate table header.
tableHeaderNames = new ArrayList<ColumnModel>();
for (int j = 0; j < 10; j++) {
tableHeaderNames.add(new ColumnModel("header "+j, " col:"+ String.valueOf(j+1)));
}
//Generate table data.
for (int i = 0; i < 8; i++) {
Map<String, ColumnModel> playlist = new HashMap<String, ColumnModel>();
for (int j = 0; j < 10; j++) {
playlist.put(tableHeaderNames.get(j).key, new ColumnModel(tableHeaderNames.get(j).key,"row:" + String.valueOf(i+1) +" col:"+ String.valueOf(j+1)));
}
tableData.add(playlist);
}
try {
System.out.println( "Table Data Size " + tableData.size() );
System.out.println( "Value Of Row 1 Col 2: " + tableData.get(1).get(2) );
} catch (Exception e) {
System.out.println( "Error!! " + e.getMessage() );
}
}
可以请一些人帮助我理解这段代码。 错误发生在以下行:-
System.out.println( "Value Of Row 1 Col 2: " + tableData.get(1).get(2) );
tableData = new ArrayList< Map<String, ColumnModel> >();
您将地图存储在列表中,并且此 map 是通用手段,map 中的键是字符串。
tableData.get(1).get(2)
上面这行get(1)将首先给您 Map object。 然后get(2) ,意味着您将Integer作为从 map 获取值的键传递,但您的 map 需要String作为键。
它的 map 和值可以使用键检索,而不是基于像 arrayList 这样的索引。 所以你得到错误
通过类似的东西
tableData.get(1).get(<some string key>)
它应该工作
Java 从 0 开始计数。
tableData.get(0).get(0)
将获取第 1 行和第 1 列的元素。包含Map
的ArrayList
从 0 开始。但是, tableData.get(tableData.size())
会抛出错误,因为它将包含 ArrayList 中的元素数量。 (因此,如果一个数组有 3 个元素, tableData.size()
将返回 3 并且您可以通过调用tableData.get(2)
来调用它)
tableData.get(1).get(2)
将获取第 2 行第 3 列的元素。
要获取第 1 行第 2 列元素的值,请调用tableData.get(0).get(1)
。
最后在 LHCHIN 的帮助下,密钥是 header 0、header 1 等,效果很好。 最后我写道: tableData.get(1).get("header 2").getValue() 它运行良好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.