java - 按 indexof 数组排序类列表
问题描述
我有长 id 的数组列表
Arrays.asList(12, 34, 54, 22, 33);
我有一个对象OwnerClass(String description, long id);
我想List<OwnerClass>
按我的数组列表中的 id 索引对 .. 所以如果 id 是 12 它将是第一个,如果 id 是 33 它将是最后一个.. 如果在数组中找不到 id 然后把它在最后..
解决方案
这将起作用
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)]
推荐阅读
- tensorflow - 如何转换超光谱图像或 TFRecord 格式的多波段图像?
- sql - 以有效的方式提取具有唯一标志的记录
- docker - 无法启动logstash
- reactjs - 如何在 Gatsby react-live 代码块组件中重用 theme-ui 主题?
- python - ModuleNotFoundError:没有名为“pyzabbix”的模块
- sql - ORACLE SQL 组基于参考表中的值
- mysql - mysql结果未显示所有列值
- c# - 如何在 C# 中创建一个可以包含 int 或 string 数组的 List 变量?
- r - R:如何在提取同一天的最大数量后从累积数据中计算2天持续时间的发生率?
- vb.net - 再次打开同一个表单时,DataGridView 行颜色不变