【问题标题】:How to sort numbers in order using list? java如何使用列表按顺序对数字进行排序?爪哇
【发布时间】:2019-05-10 06:07:04
【问题描述】:

我对列表等非常陌生,目前正在尝试学习它们。 我使用它们制作了一个程序,一切正常,直到我没有对列表中的数字进行排序。现在,每当我进入这部分代码时,它就会停止工作:

if ((st.get(i))>(st.get(k))) {
    int temp=st.get(k);
    st.add(k,st.get(i));
    st.add(i,temp);
}

你能帮我解决我做错了什么以及如何解决它吗?

【问题讨论】:

  • java 8 -> st.sort(Comparator.naturalOrder());
  • 您的问题没有很好地描述您可以使用 Collections.sort(yourList);这样做,就像在这个问题中一样,如果 a 已经理解你的意思 stackoverflow.com/questions/20518078/how-to-sort-listinteger
  • 不确定“停止工作”是什么意思,但您不是在交换列表中的元素,而是添加 more 元素。尝试set(index, element) 而不是add(index, element)。不过,很难说这是否是唯一的问题。
  • Collections.sort(st) 应该对您的列表进行排序。

标签: java


【解决方案1】:

您的问题描述“刚刚停止工作”有点含糊。我假设您没有收到异常,而只是输出不正确。您的代码(这部分)的问题在于您没有交换列表中放错位置的元素,而是在相应的索引处添加这些元素的副本。而不是add(index, element),你应该使用set(index, element)

if (st.get(i) > st.get(k)) {
    int temp = st.get(k);
    st.set(k, st.get(i));
    st.set(i, temp);
}

当然,您的排序函数的其余部分可能存在其他问题。此外,正如 cmets 中所指出的,在实现自己的冒泡排序或选择排序或任何一个很好的练习时,在所有实际应用程序中,您应该改用几种内置排序方法之一,例如 Collections.sort

【讨论】:

    【解决方案2】:

    如果您想使用 Java 8,有一种简单的方法可以对整数列表中的数字进行排序。这是众多示例之一。

    public class Main {
    
        public static void main(String[] args) {
            List<Integer> nums = Arrays.asList(1, 4, 5, 29, 30, 11, 2, 6);
            nums.sort(Comparator.naturalOrder());
            System.out.println(nums);
        }
    }
    

    【讨论】:

    • 为什么要限制在 Java 8 上?在此之前就有内置的排序方法,尽管不是那个特定的方法。此外,我们目前使用的是 Java 11,Java 8 是仍受支持的最旧版本,因此实际上可能不再需要该注释。
    • 我只是快速给出了一个简单的例子。当然你是对的,有很多排序方法。
    猜你喜欢
    • 2013-05-08
    • 2021-04-25
    • 1970-01-01
    • 2021-11-20
    • 2015-07-26
    • 2011-04-10
    • 1970-01-01
    相关资源
    最近更新 更多