Java中手动按字母顺序对字符串ArrayList进行排序

5

我正在为一个任务尝试手动按字母顺序重新排序一个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()”增加两个),因此进入无限循环。 - Mick Mnemonic
2个回答

3

这些行

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

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

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

所以它可以替换这些位置上的元素。


0

除非你在复制问题时意外多次调用了 public static void main(String[] args),否则在运行程序时会导致问题,因为它不知道从哪里开始。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接