質問

を変換する最良の方法は何ですか? 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());

<=>としての値は、を作成して取得できますが、 .html "rel =" noreferrer "> <=> <=> メソッド:

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());

などの任意のコレクションオブジェクトに変換できます。

何のリスト?

mapMap

のインスタンスであると仮定します
  • 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) または入力を挿入します MapSortedMap それを変換する前に 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());
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top