首页 > 解决方案 > 按 indexof 数组排序类列表

问题描述

我有长 id 的数组列表

Arrays.asList(12, 34, 54, 22, 33);

我有一个对象OwnerClass(String description, long id);

我想List<OwnerClass>按我的数组列表中的 id 索引对 .. 所以如果 id 是 12 它将是第一个,如果 id 是 33 它将是最后一个.. 如果在数组中找不到 id 然后把它在最后..

标签: javasortingcollections

解决方案


这将起作用

 final var integers = Arrays.asList(12, 34, 54, 22, 33);

 final var ownerClasses = Arrays.asList(new OwnerClass("", 33), new OwnerClass("", 54), new OwnerClass("", 34), new OwnerClass("", 22), new OwnerClass("", 12));

 ownerClasses.sort(Comparator.comparing(ownerClass -> {var index = integers.indexOf(ownerClass.id); return index != -1 ? index : Integer.MAX_VALUE;}));

结果

[OwnerClass(description=, id=12), OwnerClass(description=, id=34), OwnerClass(description=, id=54), OwnerClass(description=, id=22), OwnerClass(description=, id=33),
OwnerClass(description=,  id=100)]


推荐阅读