【问题标题】:Manually sorting an ArrayList of strings alphabetically in Java在 Java 中按字母顺序手动排序字符串的 ArrayList
【发布时间】:2016-02-01 04:39:14
【问题描述】:

我正在尝试按字母顺序对 ArrayList 进行重新排序以进行分配。我不允许使用任何方法进行自动排序,必须手动完成。这是我尝试过的代码,但它甚至没有运行。感谢您对此的任何意见。

import java.util.ArrayList;

public class SortArrayList {
    public static void main(String[] args) {
        ArrayList<String> values = new ArrayList<String>();
        public static void main(String[] args) {
        ArrayList<String> values = new ArrayList<String>();
        values.add("car");
        values.add("bear");
        values.add("apple");
        values.add("xray");
        sort(values);
        for (int i = 0; i < values.size(); i++)
            System.out.println(values.get(i));
    }

    public static void sort(ArrayList<String> x) {
        String temp;
        for (int i = 0; i < x.size() - 1; i++) {
            for (int j = i + 1; j < x.size(); j++) {
                if (x.get(i).compareToIgnoreCase(x.get(j)) > 0) {
                    temp = x.get(i);
                    x.add(i,x.get(j));
                    x.add(j,temp); 

                }
            }
        }
    }
}

【问题讨论】:

  • 代码运行正常(当您删除重复的 main 方法时),但在无限循环中,因为您不断将新元素添加到 sort 的列表中(x.size() 在每一轮迭代)。

标签: java sorting arraylist


【解决方案1】:

线条

x.add(i,x.get(j));
x.add(j,temp);

正在向 ArrayList 添加更多元素。您应该将它们更改为

x.set(i, x.get(j));
x.set(j, temp);

以便它替换那些位置的元素。

【讨论】:

    【解决方案2】:

    除非对 public static void main(String[] args) 的多次调用是一个错字,否则当您将它复制到您的问题时,这会在运行程序时导致问题,因为它不知道从哪里开始

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-30
      • 2012-01-31
      • 2019-08-02
      • 1970-01-01
      • 2017-07-23
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      相关资源
      最近更新 更多