首页 > 解决方案 > 对具有多个输入的 ArrayList 中的字符串使用冒泡排序

问题描述

我在我的 ArrayList 上使用冒泡排序时遇到问题,按字母顺序对它们进行排序。

我试图阅读(并复制)我在网上找到的一些冒泡排序方法,但到目前为止没有任何效果。

private void listUsers() {
    int x;
    User temp;
    User temp2;
    if (users.isEmpty()) {
        System.out.println("Error: no users in register");
    } else {
        for (User item : users) {               
            sortedUsers.add(item);
            if (!sortedUsers.isEmpty()) {
                for (x = 0; x < sortedUsers.size(); x ++) {
                    if (sortedUsers.get(x).getName().compareTo(sortedUsers.get(x+1).getName()) > 0) {
                        temp = sortedUsers.get(x);
                        temp2 = sortedUsers.get(x+1);
                        sortedUsers.set(x, temp2);
                        sortedUsers.set(x+1, temp);
                    }
                }
            }
            //System.out.println(item);
            System.out.println(item);

        }
    }
}

到目前为止,我收到了 java.lang.IndexOutOfBoundsException,我知道使用 x+1 我正在尝试获取没有项目的索引,但并不真正了解如何修复它。

标签: javabubble-sort

解决方案


利用for (x = 0; x < sortedUsers.size()-1; x ++)

您正在将每个项目与下一个项目进行比较。因此,在进行比较时,您不能超出倒数第二个(第 n-1 个)compareTo(sortedUsers.get(x+1)


推荐阅读