Java:如何将 List<?> 转换为 Map<String,?>

标签 java generics list map

<分区>

我想找到一种方法来获取下面的对象特定例程并将其抽象为一个方法,您可以通过该方法传递类、列表和字段名以取回 Map。 如果我能得到关于使用的模式或等的一般指示,这可以让我在正确的方向上开始。

  Map<String,Role> mapped_roles = new HashMap<String,Role>();
    List<Role> p_roles = (List<Role>) c.list();
    for (Role el :  p_roles) {
        mapped_roles.put(el.getName(), el);
    }

为了这个? (伪代码)

  Map<String,?> MapMe(Class clz, Collection list, String methodName)
  Map<String,?> map = new HashMap<String,?>();
    for (clz el :  list) {
        map.put(el.methodName(), el);
    }

这可能吗?

最佳答案

使用 Guava (formerly Google Collections) :

Map<String,Role> mappedRoles = Maps.uniqueIndex(yourList, Functions.toStringFunction());

或者,如果您想提供自己的方法,从对象中生成 String:

Map<String,Role> mappedRoles = Maps.uniqueIndex(yourList, new Function<Role,String>() {
  public String apply(Role from) {
    return from.getName(); // or something else
  }});

关于Java:如何将 List<?> 转换为 Map<String,?>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3199657/

相关文章:

java - 使用 Kundera 在 hbase 中使用通用对象类型

Python 将元组列表转换为嵌套字典列表

python - 从存储/列表库中查找给定列表

python - 有条件地合并文本文件中的行

java - 记录输入流

java - 在 Tomcat 的 WAR 中编辑 Java 配置文件

C# Xml 序列化 List<T> 具有 Xml 属性的后代

java - 使用默认的 spring 日志记录添加日志记录?

javascript - 我正在尝试将值从数据库传递到js。但我收到了升压错误?

java - Android 和 Guice - 注入(inject)通用类型类?