有没有办法同时创建一个包含键和值的地图(我的意思是一行代码)?例如,我创建了一个名为map的地图,每当我想添加一对新的键/值时,我需要使用方法“put”。在创建地图时是否有更短的方式来填充地图?
Map<String, String> map = new HashMap<String, String>();
map.put("A", "32");
map.put("C", "34");
map.put("T", "53");
答案 0 :(得分:3)
在Java 9中有一些new Map helper methods:
Map<String, String> map = Map.of("A", "32", "C", "34", "T", "53");
但这仅适用于最多10个条目。不仅如此,请使用:
import static java.util.Map.entry;
Map<String, String> map = Map.ofEntries(
entry("A", "32"), entry("C", "34"), entry("T", "53"));
如果您需要在早期版本中执行此操作,则可以编写类似的辅助方法。
答案 1 :(得分:1)
在 Java 8 中,您可以使用以下 explained here 方法:
Map<String, String> map = Collections.singletonMap("A", "32");
Map<String, String> map = Collections.emptyMap();
假设您的数据位于 ArrayList
对象中,这些对象包含您的 Data
,可以使用任意 getter 访问,您可以使用 Streams API:
List<Data> dataList = new ArrayList<>();
// .... populate data list
Map<String, Integer> nameToAge = dataList.stream().collect(
Collectors.toMap(Data::getFooAsKey, Data::getBarAsValue)
);
...或使用内联地图方法(如果您没有/需要/想要创建 dataList
):
Map<String, Integer> map = Stream.of(
new Data("A", "32"), new Data("C", "34"), new Data("C", "34")
).collect(Collectors.toMap(User::getFooAsKey, User::getBarAsValue));
Map<String, String> map = new HashMap<String, String>({{
put("A", "32");
put("C", "34");
put("T", "53");
}});
由于此方法可能导致内存泄漏,因此强烈不建议使用。
Map<String, String> mutuableMap = Maps.newHashMap(
ImmutableMap.of("A", "32", "C", "34", "T", "53")
);