当前位置: 首页 > 知识库问答 >
问题:

基于条件的排序列表(升序或降序)

经福
2023-03-14

我想根据两个属性对列表进行排序,但要满足一定的条件。下面的类有两个属性--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}
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}
public class sortId implements Comparator<obj > {

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

共有1个答案

帅煌
2023-03-14

您可以使用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}]
 类似资料:
  • 我有98000个美国家庭街道地址,我需要按照“步行”的顺序进行排序,也就是说,按照你要走的顺序,沿着街道的一侧走,然后穿过街道往回走。 所需的df结果,对奇数街道编号进行升序排序,然后对偶数街道编号切换到降序排序。[抱歉,第一个问题,还没有资格复制Jupyter笔记本的图像] 4列:数字、街道、城镇、偶数 “编号”列的预期结果:1231 1233 1235 1237 1239 1238 1236

  • 我有一个通用的链表,目前由int组成,我想在默认情况下按升序排序,然后切换一个布尔值,按降序排序。我该怎么做?

  • 问题内容: 我想根据子键key3的值按降序对字典d进行排序。见下文: 所以最终的字典看起来像这样。 我的方法是从d形成另一个字典e,其字典键将是key3的值,然后使用reversed(sorted(e)),但是由于key3的值可以相同,因此字典e丢失了一些键及其值。说得通? 我怎样才能做到这一点?这不是经过测试的代码。我只是想了解逻辑。 问题答案: 字典没有任何固有的顺序。或者,相反,它们的固有顺

  • 问题内容: 如何按降序对列表进行排序? 问题答案: 在一行中,使用: 将函数传递给:

  • 问题内容: 我有一个带有产品的mysql表。 这些产品具有类别ID和名称。 我想做的是按类别ID顺序降序排列,然后按产品名称升序排列。 我想要的是 不幸的是,这是行不通的。 甚至可以在mysql中定义第二个排序列的排序顺序吗? 问题答案: 您可以通过以下方式进行操作: 看看优化

  • 我的教授介绍了如何使用ArrayList创建Max Heap类。然后他让我们写一个maxHeapSort方法。我几乎成功地将堆按降序排序,但我假设排序应该按升序。现在我使用一个最大堆为[11,5,8,3,4,1]的ArrayList,它排序为[11,8,5,3,4,1]。 这是我的maxHeapSort代码: 下面是我的教授给出的heapifyDown方法: 这是我的测试代码: