Java流-将列表排序为列表的HashMap

Java流-将列表排序为列表的HashMap,java,java-8,hashmap,java-stream,Java,Java 8,Hashmap,Java Stream,假设我有一只狗类 里面有一张地图,其中一个值是品种 public class Dog { String id; ... public Map<String,String> } 我更喜欢使用流,而不是迭代它 我怎么做 您可以使用groupingBy进行操作 假设您的输入是一个列表,则Dog类中的映射成员称为映射,并且为“品种”键存储品种: 列出狗=。。。 Map=dogs.stream() .collect(Collectors.groupingBy(d->d

假设我有一只

里面有一张
地图
,其中一个值是
品种

public class Dog {
    String id;
    ...
    public Map<String,String>
}
我更喜欢使用
,而不是迭代它


我怎么做

您可以使用
groupingBy
进行操作

假设您的输入是一个
列表
,则
Dog
类中的
映射
成员称为
映射
,并且为“品种”键存储品种:

列出狗=。。。
Map=dogs.stream()
.collect(Collectors.groupingBy(d->d.map.get(“繁殖”));

通过方法参考符号,可以进一步改进上述伟大的答案:

List<Dog> dogs = ...
Map<String, List<Dog>> map = dogs.stream()
     .collect(Collectors.groupingBy(Dog::getBreed)); 
列出狗=。。。
Map=dogs.stream()
.collect(Collectors.groupingBy(Dog::getbride));
列表as=new ArrayList();
Map a=新的HashMap();
a、 放置(“键”、“1”);
a、 put(“val”、“ssd”);
Map b=新的HashMap();
b、 放置(“键”、“1”);
b、 put(“val”、“ssaad”);
Map c=新的HashMap();
c、 放置(“键”、“2”);
c、 put(“val”、“ssddad”);
Map d=新的HashMap();
d、 放置(“键”、“2”);
d、 卖出(“val”、“ssdfd”);
同上。添加(a);
同上。添加(b);
同上。添加(c);
同上。添加(d);
Map x=as.stream().collect(Collectors.groupingBy(i->i.get(“key”),
Collectors.mapping(k->k.get(“val”),Collectors.toList());
系统输出println(x);
列出不允许的词=新的ArrayList();
Map s=新的HashMap();
s、 put(“type”,1);
s、 put(“名称”、“saas”);
Map s1=新的HashMap();
s1.投入(“类型”,2);
s1.投入(“名称”、“swwaas”);
Map s2=新的HashMap();
s2.投入(“类型”,1);
s2.填写(“名称”、“saqas”);
不恰当的词语。添加(s);
添加(s1);
添加(s2);
Map t=inAppropWords.stream().collect(Collectors.groupingBy(d->AppUtil.getInteger(d.get(“type”)),Collectors.mapping(d->String.valueOf(d.get(“name”)),Collectors.toList());
系统输出打印ln(t);

我想HashMap应该替换为Map,否则具有较低项目语言级别的IDE将报告错误。如果您希望基于任何键收集数据并获取列表中相应的其他键值
List<Dog> dogs = ...
Map<String, List<Dog>> map = dogs.stream()
     .collect(Collectors.groupingBy(d -> d.map.get("Breed")));
List<Dog> dogs = ...
Map<String, List<Dog>> map = dogs.stream()
     .collect(Collectors.groupingBy(Dog::getBreed)); 
List<Map<String , String>> as = new ArrayList<>();
        Map<String, String> a = new HashMap<>();
        a.put("key", "1");
        a.put("val", "ssd");
        Map<String, String> b = new HashMap<>();
        b.put("key", "1");
        b.put("val", "ssaad");
        Map<String, String> c = new HashMap<>();
        c.put("key", "2");
        c.put("val", "ssddad");
        Map<String, String> d = new HashMap<>();
        d.put("key", "2");
        d.put("val", "ssdfd");
        
        as.add(a);
        as.add(b);
        as.add(c);
        as.add(d);
        
        Map<String, List<String>> x = as.stream().collect(Collectors.groupingBy(i -> i.get("key"),
                Collectors.mapping(k -> k.get("val"), Collectors.toList())));
        
        System.out.println(x);
List<Map<String,Object>> inAppropWords = new ArrayList<>();
    Map<String, Object> s = new HashMap<String, Object>();
    s.put("type", 1);
    s.put("name", "saas");
    Map<String, Object> s1 = new HashMap<String, Object>();
    s1.put("type", 2);
    s1.put("name", "swwaas");
    Map<String, Object> s2 = new HashMap<String, Object>();
    s2.put("type", 1);
    s2.put("name", "saqas");
    inAppropWords.add(s);
    inAppropWords.add(s1);
    inAppropWords.add(s2);
    
    Map<Integer, List<String>> t = inAppropWords.stream().collect(Collectors.groupingBy(d -> AppUtil.getInteger(d.get("type")),Collectors.mapping(d -> String.valueOf(d.get("name")),Collectors.toList())));
    System.out.println(t);