我正在用动态行和列动态填充列表,并使用p:columns在质数p:datatable中显示它们。一切都已正确完成,但我无法从指定的行和列中获取价值,例如第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) );
Java从0开始计数。
tableData.get(0).get(0)
将在第1行和第1列获取元素。包含ArrayList
的Map
从0开始。但是,tableData.get(tableData.size())
将引发错误,因为它将包含元素中的元素数量。数组列表。 (因此,如果一个数组包含3个元素,则tableData.size()
将返回3,您可以通过调用tableData.get(2)
来对其进行调用。)
[tableData.get(1).get(2)
将在第2行和第3列获取元素。
要获取元素在第1行第2列的值,请调用tableData.get(0).get(1)
。