【问题标题】:Sort a 2d array by two separate columns按两个单独的列对二维数组进行排序
【发布时间】:2014-05-11 15:11:53
【问题描述】:

现在我有一个方法可以从二维数组中获取数据,将其放入 Arraylist 中,然后让我只从该 Arraylist 中检索我想要的特定部分。

下面的代码循环遍历races Arraylist,并将赛车手、总时间和他们参加的赛事数量放入一个数组中,到目前为止还没有任何顺序。

if (!Found && selected.equals(race.GetCat()))
{
    ranking[j][0] = race.GetComp();
    ranking[j][1] = race.GetCat();
    ranking[j][2] = (GetSecs(race.GetRace1())) 
            + (GetSecs(race.GetRace2())) 
            + (GetSecs(race.GetRace3())) + "";

    n++; 
};
Found= false;

for (int i = 0; i < locations.size(); i++)
{
    for (Race race: races)
    {
        if (race.GetComp().equals(array[i][0]) && option.equals(array[i][1]))
        {
            seconds += (GetSes(race.GetRace1()))
                    + (GetSes(race.GetRace2()))
                    + (GetSes(race.GetRace3()));
            total= GetMin(seconds);
            counter++;
        }
        ranking[i][2] = total2 + "";
        ranking[i][3] = counter + "";
    }
}

所以排名打印出来像

赛车总时间事件参与 名称 230.44 2 姓名 142.51 4 名称 523.01 7 名称 444.55 2 名称 432.18 4

对排名(字符串)数组进行排序,以便通过事件数量或比赛的总时间对其进行排序不会太难。

但是,不止一名赛车手将参加相同数量的赛事,所以我想知道我必须通过什么流程或代码才能根据赛事数量对数组进行排序,然后检查查看哪些排名共享事件数量,然后根据总时间最低的情况进行切换

所以排名是这样的

乔治 500 5 约翰 400 5 乔治 500 4 大卫 300 3 卡尔 200 3

排序如下

约翰 400 5 乔治 500 5 乔治 500 4 卡尔 200 3 大卫 300 3

如果这样的事情是可能的。我可以将它们放入一个数组中,甚至按一个特定的列对它们进行排序,但是如果第一列的数字相同,则按一个排序,然后再按另一个排序,这完全超出了我的范围,如果这篇文章有任何意义的话。

【问题讨论】:

    标签: java arrays sorting arraylist


    【解决方案1】:

    退房:

    1. Column Comparator。它允许您对 ArrayList 中的任何列进行排序。
    2. Group Comparator。它允许您同时对多列进行排序。

    【讨论】:

    • 我正在努力解决这个问题,但作为一个 Java 新手,它在某些方面是一只耳朵进来,另一只耳朵出来,尤其是使用数组列表的组比较器,但我需要对于二维数组,您是否知道使用它的示例,我按照链接并试图找到共同的参考点等,但到目前为止还没有运气。
    • 该链接提供了一个简单示例,说明如何创建自定义比较器,该比较器对数组的第一列进行排序。该示例将每个数组添加到 ArrayList,但没有理由不能将每个数组添加到 2D 数组。创建二维数组后,您将使用 Arrays.sort(...) 而不是 Collections.sort(...)。与 GroupComparator 相同,您将使用 Arrays.sort(...)
    猜你喜欢
    • 2022-01-01
    • 2019-10-12
    • 2013-08-17
    • 2021-02-03
    • 1970-01-01
    • 2011-10-25
    • 2021-05-23
    • 1970-01-01
    相关资源
    最近更新 更多