回答:
List<Value> list = new ArrayList<Value>(map.values());
仮定:
Map<Key,Value> map;
Collection
にList
働くだろうが。
keySet()
とvalues()
、一般的に基本的な構造(の設定またはコレクションビュー与えるシムオブジェクトでkeySet()
返さないdupesを強調しないように設定します)。の場合values()
、返されるオブジェクトはであるList
場合がありますが、多くの場合はそうではありません。実際のリストを作成すると、リンクが壊れ、元のマップに依存しなくなります。ただし、一部のAPIはリストを必要とするため、必要なのはリストだけです-優れたAPIが必要とする最も抽象的なインターフェイスのみを必要とするというルールの強化...
ここでの問題は、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
新しいキーを作成することにより、キーを取得できます。ArrayList
Set
Map.keySet
List<String> list = new ArrayList<String>(m.keySet());
メソッドとして返された値からList
新しい値を作成して、値を取得できます。ArrayList
Collection
Map.values
List<String> list = new ArrayList<String>(m.values());
List
キーを取得した結果:
林檎 別の こんにちは
のList
値を取得した結果:
3.14 素子 世界
HashMap
、同様の並べ替えられていないMap
実装では、事実上ランダムであることに注意してください。
Java 8 Streams APIの使用。
List<Value> values = map.values().stream().collect(Collectors.toList());
何のリスト?
仮定すると、map
あなたのインスタンスでありますMap
map.values()
Collection
マップのすべての値を含むを返します。map.keySet()
Set
マップのすべてのキーを含むを返します。に含まれる値Map
をa に変換したいと思いますlist
か?最も簡単なのはvalues()
、Map
インターフェースのメソッドを呼び出すことです。これは、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
何らかの方法で「経由」する必要があります。
具体的な実装(など)で開始するか、入力をに変換してからに変換します。例えば: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());
} "