gpt4 book ai didi

java - 在 Java 中对 ArrayList 中的特定对象进行排序而不更改其他对象

转载 作者:行者123 更新时间:2023-12-01 21:24:41 24 4
gpt4 key购买 nike

假设我有一个具有 Rank 和 SubRank 属性的对象的 ArrayList。它们是通过网络服务传递给我的,所以我没有处理最初的订购。如果没有要使用的子等级,则设置为-1。

[Rank: 1, SubRank: -1]
[Rank: 2, SubRank: -1]
[Rank: 3, SubRank: 3]
[Rank: 4, SubRank: 2]
[Rank: 5, SubRank: -1]
[Rank: 6, SubRank: 1]

我需要做的是对具有 SubRank 的任何内容进行排序,仅保留剩余对象完好无损,以便列表最终看起来像:

[Rank: 1, SubRank: -1]
[Rank: 2, SubRank: -1]
[Rank: 6, SubRank: 1]
[Rank: 4, SubRank: 2]
[Rank: 5, SubRank: -1]
[Rank: 3, SubRank: 3]

限制:Java 7,无外部库

最佳答案

由于 OP 提到他仅限于 Java 7 并且不添加任何库......

创建一个新的List,其中仅包含SubRank > -1 的项目。然后对该列表进行排序。然后向下迭代原始列表,当您遇到 SubRank > -1 的项目时,将其替换为排序列表中的相应项目。

List<Item> sortedItems = new ArrayList<>();
for (Item item : items) {
if (item.subRank > -1) {
sortedItems.add(item);
}
}

Collections.sort(sortedItems,
new Comparator<Item>()
{
@Override
public int compare(Item lhs, Item rhs) {
return Integer.compare(lhs.SubRank, rhs.SubRank);
}
});

int sortedIndex = 0;
for (int i; i < items.size(); i++) {
if (items.get(i).subRank > -1) {
items.set(i, sortedItems.get(sortedIndex++));
}
}

关于java - 在 Java 中对 ArrayList 中的特定对象进行排序而不更改其他对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38376797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com