0

誰かが私の問題を解決するのを手伝ってくれますかList<Map<Integer, List<MyType>>、whileサイクルで作成する方法。データベースからデータを選択していて、オブジェクトを追加したいと思います。オブジェクトを追加して、selectのwhere条件をリストに追加し、それをMap<Integer, List<MyType>マップキーがデータベース列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に追加します。ここで、keyはでorderNum、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

代わりにハッシュマップを使用してください。これがうまくいくかどうかはわかりませんが、少なくとも試してみることができます。

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

多分これも役立つでしょう: http ://www.roseindia.net/javatutorials/javahashmap.shtml

于 2013-01-02T19:54:37.987 に答える