首页 > 解决方案 > 如何创建由 Map 支持的可变列表

问题描述

如果我有将值映射到键的方法,我 如何返回List<E>支持的?Map<K, E>MapvalueToKeyMapper

class Foo {
   private Map<Integer, String> backedMap = new HashMap<Integer, String>();

   public List<String> getList() {
      // NEED TO RETURN LIST BACKED BY MAP
   }

   public String getById(Integer id) {
      return backedMap.get(id);
   }

   private static Integer valueToKeyMapper(String value) {
      // just as exampl. In reality value will be POJO with method like getId()
      return value.hashCode();
   }
}

代码应该像这样工作(简单示例):

Foo foo = new Foo();
foo.getList().add("something");
String value = foo.getById("something".hashCode());
// I should see something

笔记:

标签: javalistdictionarydecoratormutable

解决方案


尝试这样的事情:---


List<String> list = new ArrayList<>();  

Set keys = backedMap.keySet();
for (Iterator i = keys.iterator(); i.hasNext(); ) {
           Integer key = (Integer) i.next();
           String value = (String) backedMap.get(key);
           list.add(value);
       }


 //To print Values in ArrayList :--    
    for(String s : list) {
              System.out.println("printing element -- " + s);
          }

推荐阅读