Map<key,value>
をList<value>
に変換するための最良の方法は何ですか?すべての値を反復処理してそれらをリストに挿入するだけですか。
List<Value> list = new ArrayList<Value>(map.values());
と仮定します。
Map<Key,Value> map;
ここでの問題は、 Map
には2つの値(キーと値)があり、 List
には1つの値(要素)しかないことです。
したがって、最善の方法は、キーまたは値のList
を取得することです。 (キー/値ペアを保持するためのラッパーを作成しない限り)。
Map
があるとします。
Map<String, String> m = new HashMap<String, String>();
m.put("Hello", "World");
m.put("Apple", "3.14");
m.put("Another", "Element");
List
としてのキーは、 Map.keySet
メソッドによって返される ArrayList
から新しい Set
を作成することによって取得できます。
List<String> list = new ArrayList<String>(m.keySet());
Map.values
メソッドによって返される List
から新しいArrayList
を作成することで、Collection
としての値を取得できます。
List<String> list = new ArrayList<String>(m.values());
キーのList
を取得した結果:
アップル もう一人 こんにちは
値のList
を取得した結果:
3.14 要素 世界
Java 8 Streams APIを使用する。
List<Value> values = map.values().stream().collect(Collectors.toList());
map.entrySet()
は、キーと値の両方を含むMap.Entry
オブジェクトのコレクションを提供します。これをnew ArrayList(map.entrySet())
のように好きなコレクションオブジェクトに変換できます。
何のリスト?
map
がMap
のインスタンスであると仮定します
map.values()
はマップのすべての値を含むCollection
を返します。map.keySet()
はマップのすべてのキーを含むSet
を返します。Map
に含まれる値をlist
に変換したいと思いますか。最も簡単な方法はMap
インターフェースのvalues()
メソッドを呼び出すことです。これはCollection
に含まれる値オブジェクトのMap
を返します。
このCollection
はMap
オブジェクトによって支えられており、Map
オブジェクトへの変更はすべてここに反映されます。 Map
オブジェクトに束縛されていない別のコピーが欲しい場合は、以下のように値List
を渡すArrayList
のような新しいCollection
オブジェクトを作成するだけです。
ArrayList<String> list = new ArrayList<String>(map.values());
あなたはこれのようにそれをすることができます
List<Value> list = new ArrayList<Value>(map.values());
結果のList<Value>
の値が入力Map<Key, Value>
のキー順になっていることを確認したい場合は、どういうわけかSortedMap
を「経由する」必要があります。
start を具体的なSortedMap
実装(TreeMap
など)で使用するか、入力Map
をSortedMap
に変換してからList
に変換します。例えば。:
Map<Key,Value> map;
List<Value> list = new ArrayList<Value>( new TreeMap<Key Value>( map ));
それ以外の場合は、Map
実装が提供するネイティブの順序付けがすべて得られますが、これは自然なキー順序付け以外のものになることがよくあります(Hashtable
またはConcurrentHashMap
を試してみてください)。
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("Java", 20);
map.put("C++", 45);
Set <Entry<String, Integer>> set = map.entrySet();
List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>(set);
リストにキーと値のペアを入れることもできます。また、Map.Entryを使用してリストを繰り返すことでキーと値を取得することもできます。
// you can use this
List<Value> list = new ArrayList<Value>(map.values());
// or you may use
List<Value> list = new ArrayList<Value>();
for (Map.Entry<String, String> entry : map.entrySet())
{
list.add(entry.getValue());
}
これはmapから値を取得するための一般的な方法です。
public static <T> List<T> ValueListFromMap(HashMap<String, T> map) {
List<T> thingList = new ArrayList<>();
for (Map.Entry<String, T> entry : map.entrySet()) {
thingList.add(entry.getValue());
}
return thingList;
}
HashMap<Integer, List<String>> map = new HashMap<>();
List<String> list = new ArrayList<String>();
list.add("Java");
list.add("Primefaces");
list.add("JSF");
map.put(1,list);
if(map != null){
return new ArrayList<String>((Collection<? extends String>) map.values());
}
"Map<String , String > map = new HapshMap<String , String>;
map.add("one","Java");
map.add("two" ,"spring");
Set<Entry<String,String>> set = map.entrySet();
List<Entry<String , String>> list = new ArrayList<Entry<String , String>> (set);
for(Entry<String , String> entry : list ) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
} "