当前位置 : 首页 » 互动问答 » 正文

如何在Java中将HashMap转换为List?

分类 : 互动问答 | 发布时间 : 2011-03-30 15:38:59 | 评论 : 7 | 浏览 : 115043 | 喜欢 : 44

在Java中,如何将HashMap的值作为a返回List?

回答(7)

  • 1楼
  • HashMap <Integer,String> map = new HashMap <Integer,String>();
    map.put(1,“Mark”);
    map.put(2,“Tarryn”);
    List <String> list = new ArrayList <String>(map.values());
    for(String s:list){
        的System.out.println(一个或多个);
    }
  • 2楼
  • 假设你有:

     HashMap <Key,Value> map; //以某种方式分配或填充。
    

    对于值列表:

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

    对于键列表:

     List <Key> keys = new ArrayList <Key>(map.keySet());
    

    请注意,使用HashMap时,键和值的顺序将不可靠;如果您需要保持各自列表中键和值位置的一对一对应,请使用 LinkedHashMap

  • 3楼
  • 基本上你不应该把问题弄得一塌糊涂,因为它令人困惑。

    然后你可以指定转换平均值并选择一个解决方案

     List <Integer> keyList = Collections.list(Collections.enumeration(map.keySet()));
    
    List <String> valueList = Collections.list(Collections.enumeration(map.values()));
  • 4楼
  • 集合接口有3个视图

    • keySet
    • values
    • entrySet

    其他已经回答将Hashmap转换为两个键和值列表。它完全正确

    我的补充:如何将“键值对”(aka entrySet)转换为列表。

     Map m = new HashMap();
              m.put(3,“dev2”);
              m.put(4,“dev3”);
    
          List <Entry> entryList = new ArrayList <Entry>(m.entrySet());
    
          for(Entry s:entryList){
            的System.out.println(一个或多个);
          }
    

    ArrayList具有此构造函数。

  • 5楼
  • 使用Java 8和Stream Api的解决方案:

     private static <K,V> List <V> createListFromMapEntries(Map <K,V> map){
            return map.values()。stream()。collect(Collectors.toList());
        }
    

    Usage:

     public static void main(String [] args)
        {
            Map <Integer,String> map = new HashMap <>();
            map.put(1,“one”);
            map.put(2,“two”);
            map.put(3,“三”);
    
            List <String> result = createListFromMapEntries(map);
            result.forEach(System.out :: println);
        }
  • 6楼
  • 如果你只想迭代你的HashMap,则不需要列表:

     HashMap <Integer,String> map = new HashMap <Integer,String>();
    map.put(1,“Mark”);
    map.put(2,“Tarryn”);
    for(String s:map.values()){
        的System.out.println(一个或多个);
    }
    

    当然,如果你想在迭代时从结构上修改地图(即不仅仅是改变现有键的值),那么最好使用“copy to ArrayList”方法,否则你将得到一个ConcurrentModificationException 。或者作为数组导出:

     HashMap <Integer,String> map = new HashMap <Integer,String>();
    map.put(1,“Mark”);
    map.put(2,“Tarryn”);
    for(String s:map.values()。toArray(new String [] {})){
        的System.out.println(一个或多个);
    }
  • 7楼
  • 如果您想在列表中保留相同的订单,请说: 你的地图看起来像:

     map.put(1,“msg1”)
    map.put(2,“msg2”)
    map.put(3,“msg3”)
    

    ,你希望你的列表看起来像

     [“msg1”,“msg2”,“msg3”] //与地图相同的顺序
    

    你将不得不遍历Map:

     //基于键对你的地图进行排序,否则你会得到IndexOutofBoundException
    Map <String,String> treeMap = new TreeMap <String,String>(map)
    
    List <String> list = new List <String>();
    for(treeMap.Entry <Integer,String> entry:treeMap.entrySet()){
        list.add(entry.getKey(),entry.getValue());
    }

相关阅读:

Converting a date string to a DateTime object using Joda Time library

Java reading a file into an ArrayList?

How to clear console in Java - Eclipse SDK

How to return dictionary keys as a list in Python?

How to return dictionary keys as a list in Python?

How many spaces will Java String.trim() remove?

How to print all key and values from HashMap in Android?

How to print all key and values from HashMap in Android?

With android studio no jvm found, JAVA_HOME has been set

String isNullOrEmpty in Java?