用Java从列表中提取地图的最短方法

sim*_*mon 1 java collections guava java-7

我有一个清单

List<FeatureHolder> featureHolderList;
Run Code Online (Sandbox Code Playgroud)

由FeatureHolder对象组成

public class FeatureHolder {
   private String  flag;
   private String  value;
}
Run Code Online (Sandbox Code Playgroud)

现在,我需要从featureSetList中提取Map。当然,解决方案很简单:

    Map<String, String> map = new HashMap<>();
    for(FeatureHolder fh: featureHolderList){
        map.put(fh.getFlag(), fh.getValue());
    }
Run Code Online (Sandbox Code Playgroud)

问题是,在Java 7中是否有更好(更短)的方法?我已经研究了例如Google Collections和方法Maps.uniqueIndex,但是以这种方式执行转换所需的代码将更长,并且可读性可能较低。

use*_*708 5

使用Java 7,您的代码就可以了。

或者您可以使用Java 8

Map<String, Item> map = list.stream()
                        .collect(Collectors.toMap(Item::getKey,
                                                  item -> item));
Run Code Online (Sandbox Code Playgroud)