黑马程序员技术交流社区

标题: 忘记了list 中的set 方法, 肯定是打开方式不对, [打印本页]

作者: boom_pm2.5    时间: 2016-11-18 23:07
标题: 忘记了list 中的set 方法, 肯定是打开方式不对,
上干货~
------------------------------------------------------------------------------------------------------手动分割线
在看题之前,我简单的说几句:
     每次在我们学到新知识的时候一定不要忘记最简单的做法,
      但是在学到新知识的时候,一定要合理运用
      在什么都不知道的时候,感觉题好难,
      在会做`一点的时候,感觉这题没有这么简单吧..
在robin老师跟我说了  list.set(index,element);这个方法的时候,
真的!!! 没有想到你是这样的题~

-----------------------------------------------------------------------------------------------------------手动分割线.
题文:定义一个方法swap()传入集合和两个角标使集合中元素交换位置
--------------------------------------------------------------------------------------------------------------手动分割线
代码区:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

/*1.定义一个方法swap()传入集合和两个角标使集合中元素交换位置
思路:
        a.定义一个临时变量, 记住其中一个元素
        b.用第一个位置存放第二个位置上的元素
        c.用第二个位置存放临时变量记住的元素*/
public class HomeWork01 {
        public static void main(String[] args) {
                List<Object > list = new ArrayList<>();                                //使用List 中的方法.
                list.add("1");
                list.add("2");
                list.add("3");
                list.add("4");
                list.add("5");
                list.add("6");
                list.add("7");
                list.add("8");
                System.out.println(list);
                swap(list,0,1);
                System.out.println(list);
        }
        public static void swap(List list,int x,int y){
                //a.定义一个临时变量, 记住其中一个元素
                Object obj = list.get(x);
                Object obj2 =list.get(y);
//                b.用第一个位置存放第二个位置上的元素

                ListIterator lit = list.listIterator();
                while (lit.hasNext()) {
                        Object obj3 = lit.next();
                        if (obj3==obj) {
                                lit.remove();
                                lit.add(obj2);
                        } else if (obj3==obj2) {
                                lit.remove();
                                lit.add(obj);
                        }
                }
               
//                c.用第二个位置存放临时变量记住的元素
                }
}


---------------------------------------------------------------------------------------------------------------手动分割线.

总结:
    我使用了,iterator 这个迭代器,然后进行先删除元素,然后在进行添加的做法
总体思路和listt.set(); 方法是一致的, 都是在添加和删除.
但是 使用List.set() 方法更为简单,
因为他是可以直接找到角标然后直接删除角标对应的元素
不像iterator 迭代器,是当前的位置, 毕竟做了循环.

最后说一句:
                  不是我不喜欢用快捷方式, 我是觉得我的打字速度还可以,



作者: boom_pm2.5    时间: 2016-11-18 23:08
这道题,花费了 我30分钟在想 怎么删除元素,和他角标移动的问题.真的很痛苦.
还是多查查API 了, 毕竟 久病成医, 我相信我多差几次API  就会更好的理解 和掌握这门技术.
作者: xss222    时间: 2016-12-7 13:20
66666666666




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