0

過去3日間、次の構造を機能させるために時間を費やしていますが、構造を機能させる方法を理解することはできません

array
  1 => 
    array
      0 => 
        array
          'id' => '1'
          'name' => 'xyz'
      1 => 
        array
          'id' => '12'
          'name' => 'xyz1'
      2 => 
        array
          'id' => '54'
          'name' => 'xyz12'
  20 => 
    array
      0 => 
        array
          'id' => '1'
          'name' => 'xyz'
      1 => 
        array
          'id' => '12'
          'name' => 'xyz1'
      2 => 
        array
          'id' => '54'
          'name' => 'xyz12'
      3 => 
        array
          'id' => '566'
          'name' => 'xyz1234'

次のことを試しましたが、先に進むことができません

Map<Integer, ArrayList<HashMap<String, Object>>> data  = new HashMap<Integer, ArrayList<HashMap<String, Object>>>();

次のような情報があるという点で、結果セットがあります

id               | name                      | element_id
______________________________________________________________
1                | xyz                       | 1
______________________________________________________________
1                | xyz                       | 3
______________________________________________________________
12               | xyz1                      | 1
______________________________________________________________
54               | xyz11                     | 1
______________________________________________________________
566              | xyz1234                   | 3
______________________________________________________________
12               | xyz1                      | 3
______________________________________________________________
54               | xyz11                     | 3
______________________________________________________________

私のコードは

while (resultSET.next()) 
{
    Map<String, Object> tag = new HashMap<String, Object>();
    tag.put("name", resultSET.getString(3));
    tag.put("id", resultSET.getInt(2));

    tags.put(resultSET.getInt(1), tag);
}
4

4 に答える 4

2

コレクションのコレクション (コレクションのコレクション...) を扱うとき、物事はすぐに混乱する傾向があります。さまざまなコレクションを (わかりやすい名前の) オブジェクトにカプセル化してみてください。管理が容易になると思います。

于 2012-05-07T19:02:58.283 に答える
1

試してみてください

Map<Integer, Map<Integer, Map<Integer, Integer>>> result = new HashMap<Integer, Map<Integer,Map<Integer,Integer>>>();

最終的なマップのどこに値を格納しますか

'id' => '1'
          'name' => 'xyz'

2番目のレベルのマップについては、保存する必要があります

0 => 
        array
          'id' => '1'
          'name' => 'xyz'

そして、最終的な外側のマップについては、保存する必要があります

1 => 
    array
      0 => 
        array
          'id' => '1'
          'name' => 'xyz'
      1 => 
        array
          'id' => '12'
          'name' => 'xyz1'
      2 => 
        array
          'id' => '54'
          'name' => 'xyz12'

これがうまくいくことを願っています

楽しみ !!!

于 2012-05-07T18:59:17.840 に答える
0
Map<String, Object> tag = new HashMap<String, Object>();
tag.put("name", resultSET.getString(3));
tag.put("id", resultSET.getInt(2));

できる明らかな単純化の 1 つは、tag を属性 name と id を持つクラスにすることです。それをしたくない理由は何かありますか?


現在のコードの問題について:

tags.put(resultSET.getInt(1), tag);

タグを含む配列リストを作成し、それをタグに入れる必要があります。

于 2012-05-07T19:01:54.507 に答える
0

そんなに難しくなかった…!やっと手に入れた…!!

HashMap<Integer, ArrayList<HashMap<String, Object>>> tags  = new HashMap<Integer, ArrayList<HashMap<String, Object>>>();

while (routeRs1.next()) 
{
    ArrayList<HashMap<String, Object>> temp_tags    =   new ArrayList<HashMap<String, Object>>();
    HashMap<String, Object> tag     =   new HashMap<String, Object>();

    if(tags.get(routeRs1.getInt(1)) == null)
    {
        tag.put("name", routeRs1.getString(3));
        tag.put("id", routeRs1.getInt(2));

        temp_tags.add(tag);

    }
    else
    {
        temp_tags   =   (ArrayList<HashMap<String, Object>>) tags.get(routeRs1.getInt(1));

        tag.put("name", resultSET.getString(3));
        tag.put("id", resultSET.getInt(2));
        temp_tags.add(tag);
    }
    tags.put(resultSET.getInt(1), temp_tags);
}

ソフトウェアの単純な概念は、問題を分解することです......! :D

于 2012-05-08T05:57:11.490 に答える