为了账号安全,请及时绑定邮箱和手机立即绑定

排序时arraylist索引越界

排序时arraylist索引越界

拉风的咖菲猫 2023-03-02 16:40:11
我试图根据列表中单词的长度对数组列表中的元素进行排序。所以最短到最长。使用下面的代码,由于某种原因它不会被排序。问题 - 我的实施中的错误在哪里?public static void sort(ArrayList<String> list) {        for(int i = 0; i <  list.size(); i++) {            String e1 = list.get(i);            for(int j = i; j < list.size(); j++) {                String e2 = list.get(j);                if( e1.length() > e2.length()) {                    String tmp = e1;                    e1 = e2;                    e2 = tmp;                }            }        }        for (int i = 0; i < list.size(); i++) {            System.out.println(list.get(i));          }    } 编辑:public static void sort(ArrayList<String> list) {    for(int i = 0; i <  list.size(); i++) {        String e1 = list.get(i);        for(int j = i; j < list.size(); j++) {            String e2 = list.get(j);            if( e1.length() > e2.length()) {                String tmp = e1;                e1 = e2;                e2 = tmp;                list.set(j, e1);                list.set(i, e2);            }        }    }    for (int i = 0; i < list.size(); i++) {        System.out.println(list.get(i));      }}
查看完整描述

3 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

在内循环的最后一遍,它会出界。这样想,在它应该停止的外循环的最后一次传递中,您对内循环进行了额外的传递。

它也不会对您的列表进行排序,因为您正在比较的字符串不在您的列表中。


查看完整回答
反对 回复 2023-03-02
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

删除交换字符串值的部分:

//img1.sycdn.imooc.com//6400627b00014be704720106.jpg

您已经在交换索引。我尝试了没有这部分的代码,它似乎有效。尝试删除此部分并让我知道结果。



查看完整回答
反对 回复 2023-03-02
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

在第二个 for 循环中,将条件更改为

for(int j = i; j < list.size(); j++)


查看完整回答
反对 回复 2023-03-02
  • 3 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信