黑马程序员技术交流社区

标题: 集合 笔记 [打印本页]

作者: 小布丁当    时间: 2015-11-24 21:42
标题: 集合 笔记
一.集合框架的操作
        1.集合框架(去除ArrayList中重复字符串元素方式)(掌握)
                a.案例演示
                        * 需求:ArrayList去除集合中字符串的重复值(字符串的内容相同)
                        * 思路:创建新集合方式,遍历原数组中的内容,如果新的集合中不包含该元素,就将该元素添加到新数组中,最后返回新数组
                       
        2.集合框架(去除ArrayList中重复自定义对象元素)(掌握)
                a.案例演示
                        * 需求:ArrayList去除集合中自定义对象元素的重复值(对象的成员变量值相同)               
                b.思路:建新集合方式,遍历原数组中的内容,如果新的集合中不包含该元素,就将该元素添加到新数组中,最后返回新数组
                c.注意事项
                        * 重写equals()方法的,判断集合中是否包含元素要调用contains方法,而contains方法会调用集合中添加元素的equals方法
               

        3.集合框架(LinkedList的特有功能)(掌握)
                a.LinkedList类概述
                b.LinkedList类特有功能
                        * public void addFirst(E e)                         :将指定元素插入此列表的开头。
                        * public void addLast(E e)                          :将指定元素添加到此列表的结尾。
                        * public E getFirst()                               :返回此列表的第一个元素。
                        * public E getLast()                                :返回此列表的最后一个元素。
                        * public E removeFirst()                            :移除并返回此列表的第一个元素。
                        * public E removeLast()                             :移除并返回此列表的最后一个元素。
                        * public E get(int index)                           :返回此列表中指定位置处的元素。

        4.集合框架(栈和队列数据结构)(掌握)
        * 栈
                * 先进后出
        * 队列
                * 先进先出

        5.集合框架(用LinkedList模拟栈数据结构的集合并测试)(掌握)
                a.案例演示
                        * 需求:请用LinkedList模拟栈数据结构的集合,并测试
                        * 创建一个类将Linked中的方法封装
                        *
                                        public class Stack {
                                                private LinkedList list = new LinkedList();                //创建LinkedList对象
                                               
                                                public void in(Object obj) {
                                                        list.addLast(obj);                                                        //封装addLast()方法
                                                }
                                               
                                                public Object out() {
                                                        return list.removeLast();                                        //封装removeLast()方法
                                                }
                                               
                                                public boolean isEmpty() {
                                                        return list.isEmpty();                                                //封装isEmpty()方法
                                                }
                                        }       

        6.集合框架(泛型概述和基本使用)(掌握)
                a.泛型概述:限定集合存储的数据类型,Collection<E>其中E代表引用数据类型,如果加上了该引用数据类型,
                        表示该集合中只能存储改类型对象,或者该类型的子类对象. -----简单理解:泛型就是标签,规定了集合中所能够存放的内容是啥
                b.泛型好处
                        * 提高安全性(将运行期的错误转换到编译期)
                        * 省去强转的麻烦
                c.泛型基本使用
                        * <>中放的必须是引用数据类型
                d.泛型使用注意事项
                        * 前后的泛型必须一致,或者后面的泛型可以省略不写(1.7的新特性菱形泛型)  

        7.集合框架(ArrayList存储字符串和自定义对象并遍历泛型版)(掌握)
                a.案例演示
                        * ArrayList存储字符串并遍历泛型版

        8.集合框架(泛型的由来)(了解)
                a.案例演示
                        * 泛型的由来:通过Object转型问题引入
                        * 早期的Object类型可以接收任意的对象类型,但是在实际的使用中,会有类型转换的问题。
                                也就存在这隐患,所以Java提供了泛型来解决这个安全问题。

        9.集合框架(泛型类的概述及使用)(了解)
                a.泛型类概述<T>
                        * 把泛型定义在类上
                b.定义格式
                        * public class 类名<泛型类型1,…>
                c.注意事项       
                        * 泛型类型必须是引用类型
                d.案例演示
                        * 泛型类的使用

        10.集合框架(泛型方法的概述和使用)(了解)
                a.泛型方法概述
                        * 把泛型定义在方法上
                b.定义格式       
                        * public <泛型类型> 返回类型 方法名(泛型类型 变量名)
                c.案例演示
                        * 泛型方法的使用

        11.集合框架(泛型接口的概述和使用)(了解)
                a.泛型接口概述
                        * 把泛型定义在接口上
                b.定义格式       
                        * public interface 接口名<泛型类型>
                c.案例演示
                        * 泛型接口的使用

        12.集合框架(泛型高级之通配符)(了解)
                a.泛型通配符<?>
                        * 任意类型,如果没有明确,那么就是Object以及任意的Java类了
                b.? extends E
                        * 向下限定,E及其子类
                c.? super E
                        * 向上限定,E及其父类


        13.集合框架(增强for的概述和使用)(掌握)
                a.增强for概述(分别演示存放String和Person的遍历)
                        * 简化数组和Collection集合的遍历
                b.格式:               
                        for(元素数据类型 变量 : 数组或者Collection集合) {
                                使用变量即可,该变量就是元素
                        }
                c.案例演示
                        * 数组,集合存储元素用增强for遍历
                d.好处
                        * 简化遍历


        14.集合框架(ArrayList存储字符串和自定义对象并遍历增强for版)(掌握)
                a.案例演示
                        * ArrayList存储字符串并遍历增强for版
                        *
                                        ArrayList<String> list = new ArrayList<>();
                                        list.add("a");
                                        list.add("b");
                                        list.add("c");
                                        list.add("d");
                                       
                                        for(String s : list) {
                                                System.out.println(s);
                                        }
        15.集合框架(三种迭代的能否删除)(掌握)
                * 普通for循环,可以删除,但是索引要--
                * 迭代器,可以删除,但是必须使用迭代器自身的remove方法,否则会出现并发修改异常
                * 增强for循环不能删除

        16.集合框架(静态导入的概述和使用)(了解)
                a.静态导入概述:导入类中的静态方法,但一般不用
                b.格式:
                        * import static 包名….类名.方法名;
                        * 可以直接导入到方法的级别
                c.注意事项
                        * 方法必须是静态的,如果有多个同名的静态方法,容易不知道使用谁?
                        这个时候要使用,必须加前缀。由此可见,意义不大,所以一般不用,但是要能看懂。

        17.集合框架(可变参数的概述和使用)(掌握)
                a.可变参数概述
                        * 定义方法的时候不知道该定义多少个参数
                b.格式
                        * 修饰符 返回值类型 方法名(数据类型…  变量名){}
                c.注意事项:
                        * 这里的变量其实是一个数组
                        * 如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个

        18.集合框架(Arrays工具类的asList()方法的使用)(掌握)
                a.案例演示
                        * Arrays工具类的asList()方法的使用
                        * Collection中toArray(T[] a)泛型版的集合转数组

        19.集合框架(集合嵌套之ArrayList嵌套ArrayList)(掌握)
                a.案例演示
                        * 集合嵌套之ArrayList嵌套ArrayList(也就是ArrayList集合中存放的全部是ArrayList对象)

作者: 一江夜雨    时间: 2015-11-24 21:58
拿走了  笔记
作者: 袁有福123    时间: 2015-11-24 22:46
很喜欢看这种笔记总结   感觉自己能从中学到很多 很赞!
作者: Tmac90301    时间: 2015-11-24 22:46
感谢楼主分享 很详细的总结 谢谢
作者: eddy1820    时间: 2015-11-25 15:49
不錯的整理,感謝熱心分享
作者: 梦想家Eva    时间: 2015-11-25 18:39
拿走了  笔记
作者: 夏日星    时间: 2015-11-25 20:58
赞一个!!!




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