【问题标题】:Sorting List of Class by indexof array [duplicate]按数组索引对类列表进行排序[重复]
【发布时间】:2020-04-17 06:00:22
【问题描述】:

我有一个长 id 的数组列表

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

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

我想通过数组列表中 id 的索引对List<OwnerClass> 进行排序。所以如果 id 为 12,它将是第一个,如果 id 是 33,它将是最后一个。如果找不到 id在数组中然后把它放在最后..

【问题讨论】:

  • Collections.sort(ownerClassList, Comperator.comparingInt(o -> longList.indexOf(o.getId())); 您可能需要检查索引的结果并将其替换为Integer.MAX_VALUE
  • @JohannesKuhn 我们可以关闭这个问题,因为这些问题已经在这里多次回答了。
  • 如果你找到重复的,是的。也是我使用评论的原因。不值得花时间解释我如何知道每件作品的作用以及它与问题的关系。
  • @JohannesKuhn 可以缩写为ownerClassList.sort(Comperator.comparingInt(o -> longList.indexOf(o.getId()));
  • 当 OP 没有尝试解决这个问题时,为什么会被赞成?

标签: java sorting collections


【解决方案1】:

这会起作用

 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)]

【讨论】:

    猜你喜欢
    • 2018-09-22
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 2018-01-30
    • 2019-07-01
    • 2011-12-17
    • 2022-10-14
    • 2021-12-23
    相关资源
    最近更新 更多