2010-11-23 10 views
0

下記のように問題の定義を見てください。 私はHashMapを含むArrayListを持っています。 HashMapでは、1つまたは複数のキーと値のペアが存在します。 column1の値:0001 キー:column2の値:1 キー:COLUMN3値:column1の値:0001 キー:column2の値1Java ArrayList:HashMapを含むArrayListから別の値を取得

HashMap2が キーが含まれてい

HashMap1は キーが含まれています: ArrayListには、次の含まれています:1 key:column3値:2

HashMap1とHashMap2の両方がArrayList内に保持されます。

は、今私は(column1の、column2の) のような文字列を入力してくださいそれから私は のような出力を必要とする次のデータを含む新しいのArrayListを作成します。column1の値:0001 キー:COLUMN2値:

HashMap1は キーが含まれています

:私は(COLUMN1、COLUMN3)のような文字列を入力すると1

含む次のデータを新しいのArrayListを作成します。 column1の値:0001 キー:COLUMN3値:

HashMap1は キーが含まれている1

HashMap2が キーが含まれます。column1の値:0001 キー:COLUMN3値:2

私はは異なる値を取得したい。すなわち入力文字列に従ってArrayList 論理的に私を助けてください。どうすれば同じことができますか?

+0

私はこれを数回読み返しましたが、私はまだそれに従いません... –

答えて

1

何ができるのですか。

for each map in the list. 
    copy the map. 
    map.keySet().retainAll(keys-you-want-to-keep) 
    set-of-results.add(map) 

このようにして、一連のサブマップが作成されます。

0

コードより厳密なものはありません。だからここにあなたが望むことをすることです。 selectColumnsメソッドを特に見てください。マップのリストは、クラスフィールドリストに格納されています。

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 


public class Matrix { 

    private List<Map<String, String>> list = new ArrayList<Map<String,String>>(); 

    public Matrix(int numRows) { 
     for (int i = 0; i < numRows; i++) { 
      list.add(new HashMap<String, String>()); 
     } 
    } 

    private void set(int row, String string, String string2) { 
     list.get(row).put(string, string2); 
    } 

    public Matrix selectColumns(String... columns) { 
     Matrix select = new Matrix(list.size()); 
     for (String column : columns) { 
      for (int row = 0; row < list.size(); row++) { 
       select.set(row, column, list.get(row).get(column)); 
      } 
     } 
     return select; 
    } 

    public static Matrix createDummy(int dim) { 
     Matrix matrix = new Matrix(dim); 
     for (int i = 0; i < dim; i++) { 
      for (int j = 0; j < dim; j++) { 
       matrix.set(i, "col" + j, "val:" + i + "|" + j); 
      } 
     } 
     return matrix; 
    } 

    public static void main(String[] args) { 
     Matrix mainMatrix = Matrix.createDummy(3); 
     System.out.println(mainMatrix.list); 
     System.out.println(mainMatrix.selectColumns("col1", "col2").list); 
    } 

} 
関連する問題