Java 获取列表<;对象>;对于地图中的每个键<;字符串,列表<;对象>&燃气轮机;(爪哇)

Java 获取列表<;对象>;对于地图中的每个键<;字符串,列表<;对象>&燃气轮机;(爪哇),java,dictionary,hashmap,linkedhashmap,Java,Dictionary,Hashmap,Linkedhashmap,我需要对地图的每个值进行排序,每个值中有多个对象,但我很难看到如何排序。我的地图如下所示: HashMap<String, List<Carrier>> carriers_list; HashMap-carriers\u列表; 我已经设置了一个自定义比较器来比较我的对象列表 static class CarrierComparator implements Comparator<Carrier> { @Override pu

我需要对地图的每个值进行排序,每个值中有多个对象,但我很难看到如何排序。我的地图如下所示:

HashMap<String, List<Carrier>> carriers_list;
HashMap-carriers\u列表;
我已经设置了一个自定义比较器来比较我的对象列表

static class CarrierComparator implements Comparator<Carrier> {
        @Override
        public int compare(Carrier c1, Carrier c2) {
            return c1.get_name().compareTo(c2.get_name());
        }
    }
静态类承载器Comparator实现Comparator{
@凌驾
公共整数比较(载波c1、载波c2){
返回c1.get_name().compareTo(c2.get_name());
}
}
我可以这样使用这个比较器:

List<Carrier> carrierList = getAllCarriers();
Collections.sort(carrierList, new CustomComparators.CarrierComparator());
List carrierList=getAllCarriers();
Collections.sort(carrierList,newcustomcomparators.CarrierComparator());

如何获取地图中每个关键点的列表?

您要做的是:

Map<Object,List<Object>> multimap = new HashMap<>();
    multimap.values().stream()                     // stream the values
    .flatMap(List::stream)                         // stream on the items in every list
    .sorted(CarrierComparator::compare)            // use your comparator
    .collect(Collectors.toList());                 // collect in a single List
Map multimap=newhashmap();
multimap.values().stream()//对值进行流式处理
.flatMap(List::stream)//对每个列表中的项目进行流式处理
.sorted(CarrierComparator::compare)//使用比较器
.collect(Collectors.toList());//收集在单个列表中

您可以迭代地图的值:

CustomComparators.CarrierComparator comparator = new CustomComparators.CarrierComparator();
for (List<Carrier> l : carriers_list.values())
    Collections.sort(l, comparator);
CustomComparators.CarrierComparator comparator=新的CustomComparators.CarrierComparator();
对于(列表l:carriers\u List.values())
Collections.sort(l,comparator);

要将所有值合并到一个大列表中:

List<Carrier> values = map.values().stream()
                                   .flatMap(List::stream)
                                   .collect(Collectors.toList());
List values=map.values().stream()
.flatMap(列表::流)
.collect(Collectors.toList());
可以在同一表达式中进行排序:

List<Carrier> values = map.values().stream()
                                   .flatMap(List::stream)
                                   .sorted(comparator)
                                   .collect(Collectors.toList());
List values=map.values().stream()
.flatMap(列表::流)
.排序(比较)
.collect(Collectors.toList());

下面是一个基本代码,它显示了如何将所有载体对象提取到一个列表中,然后对它们进行排序

Set<String> keys = map.keySet();
    List<Carrier> carriers = new ArrayList<Carrier>();
    for (String key : keys) {
        List<Carrier> temp = map.get(key);
        for (Carrier carrier : temp) {
            carriers.add(carrier);
        }
    }
    carriers.sort(new CarrierComparator());
Set keys=map.keySet();
列表载体=新的ArrayList();
用于(字符串键:键){
列表温度=映射获取(键);
用于(承运人:临时){
承运人。添加(承运人);
}
}
carriers.sort(新CarrierComparator());

“载体”将包含已排序的对象列表

你不是很认真吗“如何从我的
地图
中获取包含所有
运营商
列表
?是的,这是正确的,然后请编辑该问题,当前名称有误导性。我将稍后回答。好的,我已对其进行了适当编辑。谢谢。很抱歉,看到您验证的答案,似乎我误解了您的问题,并让您对问题进行了不适当的编辑。你实际上只是想迭代地图的值,不是吗?如果这是答案,其他人都误解了这个问题。