gpt4 book ai didi

java - 根据条件(升序或降序)对列表进行排序

转载 作者:行者123 更新时间:2023-11-30 06:06:35 25 4
gpt4 key购买 nike

我想根据两个属性但在某些条件下对列表进行排序。下面的类有两个属性——memberid、membernumber。值如下。

obj ()
{
memberid;
membernumber;
}

Values Assigned :
obj1 = {1,15}
obj2 = {3,10}
obj3 = {2,20}
obj4 = {2,10}
obj5 = {3,15}
obj6 = {4,25}
obj7 = {2,50}

我们需要排序为:

首先根据memberId排序,如果member Id相同则根据membernumber排序,最高的membernumber排在最前面。所以输出应该是:

obj1 = {1,15}
obj7 = {2,50} >> As 2 are multiple sort on membernumber as highest being 50
obj3 = {2,20}
obj4 = {2,10}
obj5 = {3,15}
obj2 = {3,10}
obj6 = {4,25}

我可以使用 collections.sort 根据 MemberId 对其进行排序,但我不确定如何获得相同的条件并根据 MemberNumber 对其进行排序。

感谢任何帮助。

我在 Collections.sort() 中使用的排序类。

public class sortId implements Comparator<obj > {

public int compare(obj o1, obj o2)
{
int id1 = o1.getmemberId();
int id2 = o2.getmemberId();
return id1 - id2 ;
}
}

最佳答案

您可以使用 Collections.sort,并且要降序排序,您可以使用负数来反转您的排序,如下所示:

List<obj> list = Arrays.asList(new obj(1, 15), new obj(3, 10), new obj(2, 20),
new obj(2, 10), new obj(3, 25), new obj(2, 50));

Collections.sort(list, new Comparator<obj>() {
@Override
public int compare(obj o1, obj o2) {
if (o1.getMemberid() != o2.getMemberid()) {
return o1.getMemberid() - o2.getMemberid();
} else {
//for the second sort you can use negative to sort descending
return -(o1.getMembernumber() - o2.getMembernumber());
// ^-------------------------------------------------------
}
}
});

输出

[{1,15}, {2,50}, {2,20}, {2,10}, {3,25}, {3,10}]

关于java - 根据条件(升序或降序)对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43766914/

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