java - 在 Java 中同时对三个 ArrayLists 进行排序的最有效方法是什么

标签 java android sorting arraylist

我有三个 ArrayListsStrings 中的一个 - 名称,以及 Integers 中的两个 - 分数和图片编号。我想按玩家得分(从最高到最低)同时对它们进行排序。现在我使用一个简单的冒泡排序,但我认为当 Lists 变大时它不会有效。

这是我的代码:

public class MyBubbleSort {

    public static void bubble_srt(List<Integer> score, List<String> name, List<Integer> pic) {
        int n = score.size();
        int k;
        for (int m = n; m >= 0; m--) {
            for (int i = 0; i < n - 1; i++) {
                k = i + 1;
                if (score.get(i) < score.get(k)) {
                    swapNumbers(i, k, score, name, pic);
                }
            }
            printNumbers(score);
        }
    }

    private static void swapNumbers(int i, int j, List<Integer> score, List<String> name, List<Integer> pic) {

        int temp;
        temp = score.get(i);
        score.set(i, score.get(j));
        score.set(j, temp);

        String s;
        s = name.get(i);
        name.set(i, name.get(j));
        name.set(j, s);

        int p;
        p = pic.get(i);
        pic.set(i, pic.get(j));
        pic.set(j, p);

    }

    private static void printNumbers(List<Integer> input) {

        for (int i = 0; i < input.size(); i++) {
            System.out.print(input.get(i) + ", ");
        }
        System.out.print("\n");
    }

}

谢谢!

最佳答案

最好的方法是创建一个包含分数、名称和图片属性的类,并有一个该类的列表,您可以使用 Collections.sort 和一个 Comparator 根据分数属性比较你的类的两个实例。

与其他排序算法(归并排序、快速排序)相比,冒泡排序效率低下,并且您无需自己实现排序算法,因为标准 Java 包已经为您完成了。

关于java - 在 Java 中同时对三个 ArrayLists 进行排序的最有效方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34283504/

相关文章:

java - 如何对文件进行分组排序?

java - NetBeans:无法启动 Tomcat ("The system cannot find the file specified")

java - 如何在没有 ConcurrentModificationException 的情况下修改 subList?

java - JWT 中的 "Secret"应该是什么?

android - 在 Android MediaStore 中插入音频专辑

android - CyanogenMod:翻译项目

c++ - 为什么内置排序无法对 vector 映射进行排序?

mysql - SQL有没有办法在不使用UNION的情况下保留元数据的同时将多个时间列排序为一个?

java - if 和 else 语句

java - 带参数的 Http GET 方法传递给 php 函数