Android:创建列表<map <string,list <objecttype =“”>&gt; </map <string,>

时间:2013-01-02 19:42:19

标签: java android

有人可以帮助我解决我的问题,如何在while循环中创建List<Map<Integer, List<MyType>>。我正在从数据库中选择数据并且我想添加对象,这些对象完成了将条件放入List中的选项,然后将其放入Map<Integer, List<MyType>,其中map key在我的情况下是数据库列order_num中的整数。最后,我想将所有创建的地图添加到List中。方法的返回值为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);
   }

现在我想将此列表添加到地图中,其中密钥为orderNum,值为List<Item>

2 个答案:

答案 0 :(得分: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 );

答案 1 :(得分:0)

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

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

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