将映射的条目分组到列表中



假设我有一个HashMap,其中包含一些条目:

Map hm= new HashMap();
hm.put(1,"ss");
hm.put(2,"ss");
hm.put(3,"bb");
hm.put(4,"cc");
hm.put(5,"ss");

我想要像这样的输出

[{1,ss},{2,ss},{5,ss}]

有可能吗?

当然是:

List<Map.Entry<Integer,String>> list =
hm.entrySet().stream().collect(Collectors.toList());

您应该将Map的定义更改为:

Map<Integer,String> hm = new HashMap<>();

附言:您没有指定是要输出List中的所有条目,还是只需要其中的一些条目。在示例输出中,您只包括具有";ss";价值这可以通过添加一个过滤器来实现:

List<Map.Entry<Integer,String>> list =
hm.entrySet().stream().filter(e -> e.getValue().equals("ss")).collect(Collectors.toList());
System.out.println (list);

输出:

[1=ss, 2=ss, 5=ss]

编辑:您可以按以下所需格式打印List

System.out.println (list.stream ().map(e -> "{" + e.getKey() + "," + e.getValue() + "}").collect (Collectors.joining (",", "[", "]")));

输出:

[{1,ss},{2,ss},{5,ss}]

首先,您这样声明您的HashMap:

HashMap<Integer, String> hm = new HashMap<>();

然后在放入密钥和值之后,你可以像这样打印整个HashMap:

System.out.println("Mappings of HashMap hm1 are : " + hm);

如果您想打印密钥等于1的值,则:

if (hm.containsKey(1)) { 
String s = hm.get(1); 
System.out.println("value for key 1 is: " + s); 
} 

最新更新