黑马程序员技术交流社区

标题: 关于List排序的问题 [打印本页]

作者: gm1314    时间: 2014-7-30 07:29
标题: 关于List排序的问题
本帖最后由 gm1314 于 2014-7-30 20:23 编辑
  1. public class Test9 {
  2.         /*
  3.          * 9、 定义一个静态方法,该方法可以接收一个List<Integer>,方法内对List进行排序
  4.          */
  5.         public static void main(String[] args) {
  6.                 ArrayList lst=new ArrayList();
  7.                 lst.add(4);
  8.                 lst.add(8);
  9.                 lst.add(6);
  10.                 lst.add(3);
  11.         
  12.                int len = lst.size();  
  13.                 for(int i = 0; i < len - 1; i++) {  
  14.                     int min =(Integer) lst.get(i);
  15.                     for(int j = i ; j < len; j++) {
  16.                             int max=(Integer) lst.get(j);
  17.                         if(min >(Integer)lst.get(j)) {
  18.                                 lst.add(j,min) ;
  19.                              lst.add(i,max);
  20.                         }  
  21.                     }  
  22.                      
  23.                 }  
  24.                 for(int i = 0; i < len; i++) {  
  25.                     System.out.print(lst.get(i) + " ");  
  26.                 }
  27.         }
  28. }
复制代码

为什么当最后一个数变化时,排序结果就变了!
作者: Bule丶    时间: 2014-7-30 23:25
如果你外层循环min的值比内层循环max的值大,便会在索引外j的地方插入最大值,那么lst集合就会变大,我发现lst.add方法不是替换,就是插入了一个值,但是len长度还是4 8大,如果把8插入到第3个,就不进lst.add了,
作者: gm1314    时间: 2014-7-31 06:11
Bule丶 发表于 2014-7-30 23:25
如果你外层循环min的值比内层循环max的值大,便会在索引外j的地方插入最大值,那么lst集合就会变大,我发现 ...

哦哦 谢谢 add是增加一个值,最后的大了,不进条件就会出错!加个好友吧:)
作者: 刘斌2014    时间: 2014-7-31 09:07
以前我也遇到过这样的问题




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2