Javaでマップをリストに変換するにはどうすればよいですか?
-
06-07-2019 - |
質問
を変換する最良の方法は何ですか? Map<key,value>
に List<value>
?すべての値を反復してリストに挿入するだけですか、それとも何かを見落としていますか?
解決
List<Value> list = new ArrayList<Value>(map.values());
仮定:
Map<Key,Value> map;
他のヒント
ここでの問題は、 Map
には2つの値(キーと値)があり、 List
には1つの値(要素)しかありません。
したがって、できる最善の方法は、キーまたは値のArrayList
を取得することです。 (キー/値ペアを保持するラッパーを作成しない限り)。
Set
:
Map<String, String> m = new HashMap<String, String>();
m.put("Hello", "World");
m.put("Apple", "3.14");
m.put("Another", "Element");
Map.keySet
としてのキーは、新しい Collection
の Map.values
<=> メソッド:
List<String> list = new ArrayList<String>(m.keySet());
<=>としての値は、
List<String> list = new ArrayList<String>(m.values());
キーの<=>を取得した結果:
Apple Another Hello
値の<=>を取得した結果:
3.14 Element World
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
に変換したいと思いますか?最も簡単なのは、values()
インターフェイスのCollection
メソッドを呼び出すことです。これは、List
に含まれる値オブジェクトのArrayList
を返します。
この<=>は<=>オブジェクトによってサポートされており、<=>オブジェクトへの変更はすべてここに反映されることに注意してください。したがって、<=>オブジェクトにバインドされていない別のコピーが必要な場合は、以下のように値<=>を渡す<=>のような新しい<=>オブジェクトを作成するだけです。
ArrayList<String> list = new ArrayList<String>(map.values());
このようにできます
List<Value> list = new ArrayList<Value>(map.values());
結果の値を保証したい場合は、 List<Value>
入力のキー順序にあります Map<Key, Value>
, 、「経由」する必要があります SortedMap
どうにか。
どちらか 始める コンクリートで 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<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());
} "
マップから値を取得する一般的な方法を次に示します。
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());
}