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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yuguoqing 中级黑马   /  2015-7-17 22:47  /  322 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Collection 【2种遍历方式  迭代器  增强for循环】
        |--add() remove() clear() contains() size() iterator()
        |--iterator迭代器
                1):通过集合对象 (Collection的对象) 调用iterator(),生成迭代器对象
                        Collection c         = new ArrayList()
                        Iterator it =c.iterator()
                2):通过迭代器对象的hasNext()来判断集合是否有下一个元素
                3):如果有下一个对象 就通过迭代器对象的next()来获取下一个元素
                        while(it.hasNext()){
                                String str =(String)it.next();
                                System.out.println(str)
                        }
                如果没有下一个对象 再获取的话 报错NoSuchElementException

                迭代器的原理:迭代器其实是一个借口
                迭代器的源码:迭代器其实是用内部类的形式来实现的

               
                |--List  元素可以重复 有序 可以通过索引来操作元素        【4种遍历方式  迭代器  列表迭代器 增强for循环 普通for循环】
                        |--add() remove() set() get() indexOf() subList() listIterator()
                        |--listIterator()
                                ConcurrentModificationException 并发修改异常
                                ①:原因:在通过迭代器遍历集合的时候 我通过集合来操作(增删改)了集合里面的元素
                                ②:解决办法:
                                        A:在迭代器遍历集合的时候,我们通过迭代器来操作元素
                                                ListIterator        列表迭代器
                                        B:for循环来遍历集合的时候,通过集合来操作元素
                               
                        |--ArrayList
                                底层是数组结构 查询快 增删慢 线程不安安 效率高
                                案例:用两个ArrayList来去掉重复的元素
                        |--Vector
                                底层是数组结构 查询快 增删慢 线程安安 效率低

                        |--LinkedList
                                底层是链表结构 查询慢 增删快 线程不安安 效率高
                                addFirst() removeFirst() getFirst()
                                案例:模拟栈结构

        泛型:(JDK1.5后的新特性)
                解决报(幻想)问题
                把运行期间类型转换问题提前到了编译期间
                优化程序设计
                        泛型类
                        泛型方法
                        泛型接口
        增强for循环(JDK1.5后的新特性)
                它是用来替代迭代器的 所以说 二者选其一即可


                       

                        |--Set :元素唯一 无序 【2种遍历方式  迭代器  增强for循环】
                               
                                |--HashSet:
                                       
                                        HashSet是如何保证元素唯一性的呢?
                                        HashSet底层是用的哈希表结构
                                        底层依赖两个方法hasCode() equals()
                                                首先判断hasCode()返回值是否相同
                                                        相同:判断equals()
                                                                true:说明两个对象 相同  咱们就不添加
                                                                false:说明两个对象 不相同 咱们就添加
                                                        不相同:添加
                                        所以说咱们要让元素所在的类 重写hasCode()和equals()方法
                                        如何重写呢?eclipse直接生成
                               
                                |--TreeSet
                                       
                                        1:自然排序:让TreeSet存储的元素所在的对象实现Comparable接口
                                                通过compareTo()的返回值来保证元素的唯一(排序)
                                                        正数:说明咱们要存入的这个元素比上一个元素大  往后放
                                                        负数: 说明咱们要存入的这个元素比上一个元素小  往(钱)放                                                                                       
                                                        0: 说明重复
                                                        public int compareTo(Student s){
                                                                int num =this.age-s.age;
                                                                int num2 =(num==0)?this.name.compareTo(s.name):num;
                                                                return num2;
                                                        }
                                        2: 通过比较器:Comparator 调用TreeSet的带参构造方法 传入一个比较器
                                                让TreeSet就按照咱们这个比较器的规则来去掉重复和排序
                                               
                                                如果以后我们看到方法上的参数是抽象类或者接口的时候 我们可以考虑用匿名内部类来实现


                               
                                Collections:集合的工具类
                                        sort()
                                        binarySearch()
                                        max()
                                        min()
                                        reverse()
                                        shuffle()
                                       



Map:是存键值对的   【遍历方式:两种1);获取所有的键 的集合  遍历集合 根据键来获取值(v get(Key k)) 按照刘毅老师的说法:根据丈夫找妻子
                        2):获取所有的键值对的集合  遍历集合 根据键值对来获取键和值     按照刘意来时的说法:根据结婚证来找丈夫和妻子】
        键不可以重复 值可以重复
       
        |--HashMap:底层是哈希表结构 是针对键有效的
       
        |--TreeMap:底层是二叉树结构  是针对键有效的
       
       

评分

参与人数 1黑马币 +3 收起 理由
jiatengde + 3 看到总结了,用心了,值得学习一下.

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马