繁体   English   中英

从 ArrayList 访问数据

[英]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 列的元素。包含MapArrayList从 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM