话不多说,直接贴代码:
//对任务单的分段计划根据里程进行排序设置顺序
public void deliverySeq(Shipment shipment) {
Set<Leg> legs = shipment.getLegs();
Map<String, List<Leg>> legMaps = new HashMap<String, List<Leg>>();
String consignorCode = GlobalParamUtils
.getGloableStringValue("CONSIGNOR_CODE");
for (Leg leg : legs) {
List<Leg> legList = legMaps.get(leg.getLocationHashCode());
if (legList == null) {
legList = new ArrayList<Leg>();
legMaps.put(leg.getLocationHashCode(), legList);
}
legList.add(leg);
}
// 对相同的出发地,目的地的LEG进行里程归纳
Map<String, Integer> seqMap = new HashMap<String, Integer>();
for (Map.Entry<String, List<Leg>> me : legMaps.entrySet()) {
Leg leg = me.getValue().get(0);
Integer distance = this.getLegDistance(leg, consignorCode);
seqMap.put(me.getKey(), distance);
}
// 调用排序
Map.Entry<String, Integer>[] seqMaps = this
.getSortedHashtableByValue(seqMap);
for (int i = 0; i < seqMaps.length; i++) {
List<Leg> legList = legMaps.get(seqMaps[i].getKey());
for (Leg leg : legList) {
leg.setDeliverySeq(i + 1);
commonDao.store(leg);
}
}
}
//Map的Integer值排序的写法
public Map.Entry<String, Integer>[] getSortedHashtableByValue(
Map<String, Integer> map) {
Set set = map.entrySet();
Map.Entry[] entries = (Map.Entry[]) set.toArray(new Map.Entry[set
.size()]);
Arrays.sort(entries, new Comparator<Object>() {
public int compare(Object arg0, Object arg1) {
Long key1 = Long.valueOf(((Map.Entry<String, Integer>) arg0)
.getValue().toString());
Long key2 = Long.valueOf(((Map.Entry<String, Integer>) arg1)
.getValue().toString());
return key1.compareTo(key2);
}
});
return entries;
}
分享到:
相关推荐
Java8 Stream 操作 Map 根据 Key 或 Value 排序的实现 Java8 中的 Stream 操作为开发者提供了简洁高效的数据处理方式,今天我们将介绍如何使用 Java8 Stream 操作 Map 根据 Key 或 Value 排序的实现。 Map 根据 ...
Stream 操作写法详解 Stream 操作是 Java 8 中引入的一种函数式编程方式,旨在简化数据处理和操作。Stream 操作可以将复杂的数据处理过程分解成多个步骤,每个步骤执行特定的操作,最后将结果收集起来。 Stream ...
1. 初始化方法:定义$.fn.sortable,这是jQuery插件的标准写法,用于扩展jQuery对象的方法。 2. 配置选项:插件可能提供一些可配置的参数,如拖动的灵敏度、排序完成后的回调函数等。 3. 事件处理:包括对...
- **Cluster By**:当`Distribute By`和`Sort By`字段相同时,可以使用`Cluster By`代替,简化写法的同时实现相同的效果。 2. **合理设置Map/Reduce Task数量** - **减少Map数量**:通过小文件合并或调整JVM重用...
- 在投影中不能同时包含包含字段和排除字段,例如:`db.salary.find({}, {"map.year": 1, "map.month": 0})`,这样的写法会导致错误。 - 可以通过设置其他字段为1,并将“_id”设置为0来排除“_id”,例如:`db....
3. **C++特性**:包括C++的面向对象特性(类、对象、继承、多态)、模板、STL(标准模板库)的使用,如vector、list、map、set等容器,以及算法库中的函数。 4. **Java特性**:包括Java的面向对象特性、接口、异常...
5. **functools模块**: 提供了许多有用的功能,如partial()可以用于部分应用函数,以及cmp_to_key()可以将比较函数转换为关键字函数,使得函数可用于排序。 **二、作用域** 在Python中,变量的作用域决定了它们的...
`对map中的键或者值的排序.docx`说明了Map接口的使用。Map存储键值对,不保证顺序,但可以通过`Collections.sort()`和自定义比较器进行排序。`对Map按key和value分别排序 - DM张朋飞 - 博客园.htm`可能详细讲解了...
最后,我们再用一次`map`函数,只保留每个排序后的元组的第一个元素(即文件名),生成最终的排序文件列表`@sorted_files`。 这些步骤可以合并到一行代码中,尽管这样做可能降低了可读性,但在某些情况下,简洁的...
箭头函数(Arrow functions)提供了更紧凑的语法,改变了`function`关键字的写法,同时改变了`this`的指向,使其更加符合预期: ```javascript let add = (x, y) => x + y; ``` ES6还引入了let和const关键字,它们...
例如,它可能提供了自定义比较函数的能力,使得排序和查找可以依据特定的规则进行;或者提供了高效的遍历和修改节点的方法。 在标签中,"STL tree"和"标准库"表明这个树容器是面向STL设计的,遵循了STL的设计原则,...
最后,Python3中列表推导式和生成器表达式也被看作是具有map和filter功能的简化写法。列表推导式是创建列表的简洁方式,可以用来替换列表的for循环。生成器表达式与列表推导式类似,但其生成的不是列表,而是一个...
7. **并行数组排序**:Arrays类新增了并行排序方法,利用多核CPU的并行计算能力,提高了排序效率。 8. **新的集合工厂方法**:List、Set、Map接口都添加了一些静态工厂方法,可以直接创建带有初始元素的集合,简化...
在Java 8中,可以使用`stream()`方法创建一个流,接着使用`filter()`筛选出低卡路里菜品,`sorted()`进行排序,`map()`将菜品对象转化为名字,最后`collect()`收集到新的列表中。这种方法更直观,且由于流操作可以...
`TreeMap`内部会根据Key的自然顺序(或者自定义比较器)来排序键。在这里,我们将`listIp`中的每个元素作为Key,对应的Value表示该元素在列表中出现的次数。 循环遍历`listIp`中的每个元素,如果当前元素在Map中不...
4. 算法:算法是解决问题的步骤和方法,如排序(快速排序、归并排序、冒泡排序等)、查找(二分查找、哈希查找等)、图算法(Dijkstra、Floyd等)。熟练掌握各种算法有助于提升代码质量和运行效率。 5. Spring全家...
- **知识点**:条件表达式的正确写法。 - **解析**:在C语言中,`a0`、`!a`和`a=0`都不是表示`a`不等于0的有效方式。只有`a != 0`才是正确的表达式。因此,正确答案为ABC。 #### 题目20:程序段输出结果 - **知识点...
- `++a++`这样的写法在C++中是错误的,因为`++a`已经返回了值,而`++`操作需要一个左值表达式。 - `++(a++)`也是错误的,因为括号内的`a++`返回的是a自增前的值,该值为右值,无法再对其执行`++`操作。 #### 数字...