문제

변환하는 가장 좋은 방법은 무엇입니까? Map<key,value> a List<value>? 모든 값을 반복하고 목록에 삽입하거나 내가 무언가를 간과하고 있습니까?

도움이 되었습니까?

해결책

List<Value> list = new ArrayList<Value>(map.values());

가정 :

Map<Key,Value> map;

다른 팁

여기서 문제는 그 것입니다 Map 두 가지 값 (키와 가치)이 있고 List 하나의 값 (요소) 만 있습니다.

따라서 할 수있는 최선은 List 키 또는 값의. (키/값 쌍을 붙잡기 위해 래퍼를 만들지 않는 한).

우리가 있다고 말합니다 Map:

Map<String, String> m = new HashMap<String, String>();
m.put("Hello", "World");
m.put("Apple", "3.14");
m.put("Another", "Element");

키는 a List 새로운 것을 만들어 얻을 수 있습니다 ArrayList a Set 반환 Map.keySet 방법:

List<String> list = new ArrayList<String>(m.keySet());

값은 a List 새로운 것을 창출 할 수 있습니다 ArrayList a Collection 반환 Map.values 방법:

List<String> list = new ArrayList<String>(m.values());

얻은 결과 List 키 :

Apple
Another
Hello

얻은 결과 List 값 :

3.14
Element
World

Java 8 스트림 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 a list? 가장 쉬운 것은 전화하는 것입니다 values() 방법의 방법 Map 상호 작용. 이것은 반환합니다 Collection 에 포함 된 가치 객체의 Map.

이것에 주목하십시오 Collection 뒷받침됩니다 Map 객체와 변경 사항 Map 객체는 여기에 반영됩니다. 따라서 별도의 사본을 원한다면 Map 객체, 단순히 새로운 것을 만듭니다 List an 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 a 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());
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top