A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小苏. 初级黑马   /  2018-4-7 19:03  /  1411 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

                对集合对象中的元素进行反转
         参数ArrayList<Integer> list:要进行操作的集合对象
    我们想要对一个集合对象的元素进行反转,那么我们就要理解反转的思路是什么
也就是说:第一个和最后一个交换,第二个和倒数第二个交换,第三个和倒数第三个交换...)
  我们可以参照数组的反转方法如下:
   arr[0] 和arr[arr.length-1-0]交换
          arr[1] 和arr[arr.length-1-1]交换
   arr[2] 和arr[arr.length-1-2]交换
通过数组反转方法我们可以总结出集合的反转方法:
因为我们知道了几个的总长度 所以我们可以通过所以进行反转
也就是说 第一个索引的值list.get(0)和最后一个索引的值进行交换list.get(list.size()-1-0)
以此类推:
  list.get(0) 和list.get(list.size()-1-0)交换
  list.get(1) 和list.get(list.size()-1-1)交换
  list.get(2) 和list.get(list.size()-1-2)交换
我们可以看出好多东西都是重复的,所以我们可以这样通过for循环便利一下:
  比如一个5位数数组它就要反转2次才能全部反转;一个8位的需要4次反转
所以我们可以把总长度除以2得到反转的次数.
  for(int i=0;i<list.size()/2;i++){
我们通过定义一个临时变量来接收第一个要反转的值
   int temp=list.get(i);
   list.set(i, list.get(list.size()-1-i));
   list.set(list.size()-1-i, temp);
  }



1 个回复

倒序浏览
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马