以与具有某些公共属性的对象的另一对象列表相同的顺序排序对象列表

时间:2017-10-12 00:44:21

标签: sorting java-8 comparator

我有两个像下面这样的ArrayLists;

List<HashMap<String, String>> mapList;
List<myclass> sortedDtos;

顾名思义sortedDtos已经排序。

`myclass` has a field called `jobNo`
The HashMap has a key called `jobNo`

基本上我想通过比较属性mapList,根据sortedDtos订购jobNo

如何在Java 8中执行此操作?

这似乎工作正常,也可能更有效率。

 List<String> jobNos = new ArrayList();
            sortedDtos.stream().forEach(dto -> jobNos.add(dto.getJobNo()));

            // sort maplist based on the sorting of the dtos
            mapList.sort(Comparator.comparing(el -> jobNos.indexOf(el.get("jobNo"))));

1 个答案:

答案 0 :(得分:0)

我会建议以下方式。这种方法涉及提供您自己的自定义比较器来对地图进行排序。

{{1}}