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