- package Test;
- import java.util.*;
- public class LanQiao{
- //你原来的方法 你没写返回值
- public static void newToOld1(List<String> l1){
- List<String> l2 =new ArrayList<String>();//引用类型
- l2 = l1;
- System.out.println("listsize21::"+l2.size());
- while(l2.size()>1){
- l2 = l1;
- l1.clear();// l1,l2指向同一个地址,你把l1清空了不就相当于把l2清空了
- for(int x = 0;x<l2.size();x++){
- l1.add(l2.get(x+1));//这里直接把奇数位置一处不就可以了吗
- }
- }
- }
- //修改后的方法
- public static void newToOld(List<String> l1){
- System.out.println("listsize21::"+l1.size());
- while(l1.size()>1){
- for(int x = 1;x<l1.size();x++){
- //这里直接把奇数位置移除不就可以了吗,不过有一点得注意,ArrayList删除 一个元素的话,后面的元素会索引向前移
- //比如说索引123 把2删了,3会自动变 成2 所以每删除一个就会往前移动一个位置,所以我们只需要每次加1 然后加上偏移的一个位置,就正好了
- //下面打印出来,方便看效果
- System.out.println(l1.remove(x)+" "+x);
- }
- }
- }
- public static void main(String[] args){
- List<String> list =new ArrayList<String>();
- for(int x=1;x<=106;x++){
- for(char y= 'a';y<='s';y++)
- list.add(Character.toString(y));
- }
- System.out.println(list);
- System.out.println("listsize::"+list.size());
- newToOld(list);
- System.out.println("listsize::"+list.size());
- System.out.println(list);
- }
- }
复制代码 |