0

有人可以帮我解决我的问题,如何List<Map<Integer, List<MyType>>在循环中创建。我正在从数据库中选择数据,我想添加对象,这些对象完成 select 的 where 条件到 List 中,然后将它放入Map<Integer, List<MyType>where 映射键在我的情况下是来自数据库列 order_num 的整数。最后我想将所有创建的地图添加到列表中。方法的返回值为List<Map<Integer, List<MyType>>>.

这是我的部分来源:

while (cursor.moveToNext) {
       int id = cursor.getInt(cursor.getColumnIndex("item_id"));
       int orderNum = cursor.getInt(cursor.getColumnIndex("order_num"));
       String name = cursor.getString(cursor.getColumnIndex("item_name"));

       list.add(new Item(id, orderNum, name);
   }

现在我想将此列表添加到 Map 其中 keyorderNum和 value 是List<Item>

4

2 回答 2

2

我会在循环外声明一个 orderNum 变量,这样你就可以在循环结束时使用它:

int orderNum;
for ( cursor.moveToFirst; !cursor.isAfterLast(); cursor.moveToNext )
{
    int id = cursor.getInt( cursor.getColumnIndex( "item_id" ) );
    orderNum = cursor.getInt( cursor.getColumnIndex( "order_num" ) );
    String name = cursor.getString( cursor.getColumnIndex( "item_name" ) );

    list.add( new Item( id, orderNum, name ) );
}

map.put( orderNum, list );

我猜整个块也会处于某种循环中,所以当那个循环结束时,你可以做

masterList.add( map );
于 2013-01-02T19:54:37.107 回答
0

Ty 使用 hashmap 代替。我不确定这是否有效,但您至少可以尝试一下。

HashMap<Integer, ArrayList<MyClass>> myMap = new HashMap<Integer, ArrayList<MyClass>>();

也许这也有帮助: http ://www.roseindia.net/javatutorials/javahashmap.shtml

于 2013-01-02T19:54:37.987 回答