java - 对具有多个输入的 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 我正在尝试获取没有项目的索引,但并不真正了解如何修复它。
解决方案
利用for (x = 0; x < sortedUsers.size()-1; x ++)
您正在将每个项目与下一个项目进行比较。因此,在进行比较时,您不能超出倒数第二个(第 n-1 个)compareTo(sortedUsers.get(x+1)
。
推荐阅读
- python - 对于列表值的字典,找到列表中每个索引的最大值的键
- php - 如何在 PHP 中更改格式编号
- excel - 在不同工作表的列中查找匹配项,然后将特定单元格复制粘贴到 VBA 中的匹配行
- php - 参数 1 传递给 App\Mail\OrderPlaced::__construct()
- python - python为每年创建具有特定结束日期的多年日期范围
- ruby-on-rails - Rails 中的 CSRF - 复制真实性令牌
- python - 没有名为“websockets.legacy”的模块
- haskell - 使用泛型静态分析类型
- javascript - 为什么在 mdn 的这个示例中,每个内部函数都将先前的(父)函数参数作为输入?
- reactjs - Chart.js (react-chartjs-2) - 增加图例标签之间的边距,但不在图表上