黑马程序员技术交流社区

标题: 学习笔记 [打印本页]

作者: wangli1201    时间: 2019-4-18 18:06
标题: 学习笔记
  1.单列集合
                Collection
        1.1 单列集合的两大派系
                List:有序,可重复的
                    ArrayList 数组--> 查询快(有索引),底层连续,增删慢,数组长度不可变
                        LinkedList 双向链表 --> 查询慢,增删快
                Set:无索引,不可重复
                    LinkedHashSet :有序,不可重复的集合
                        HashSet:底层哈希表  1.7 数组+ 链表  1.8 数组+链表+红黑树
                        HashSet:中无法存储重复元素的原因:(重点,菜J杀手)
                                1.调用HashCode 方法 --> 如果hashCode 元素的索引位置上有元素
                                                                        有元素 :调eqauls
                                                                                          1.相等:不存
                                                                                          2.不相等:挂
                                                                        没元素:放
                        TreeSet:
                                底层可以排序的不可重复的set 集合
                                自然排序和比较器排序  --> 左中右原则                       
                               
                                                                       
        1.2 为什么需要有迭代器这个东西 :编程思想:屏蔽底层不同
            但是在迭代过程中,如果利用集合去修改集合长度,此时会发生并发修改异常
                简单版:解决方案(listIterator)
                复杂版: 底层有期望值和修改值 当调用了迭代方法后,那么就会进行期望值=修改值,
                而在此过程中,如果使用集合修改了长度,修改值发生变化,所以发生了并发修改异常

       
        2.双列集合
        Map 底层是哈希表   
                无序的--> 存進去的顺序和取出来的顺序不一致
                Map的key 是不能重复,Map 的value 无所谓
        map中常见的方法
                遍历
                Map<String,String> hm = new HashMap();
                Set<String> keySet = hm.keySet();
                for(String key : keySet){
                        int value =  hm.get(key)
                }
               
               
                遍历的第二种方式
                Set<Map.Entry<String,String>> entrySet = hm.entrySet();
                for( Map.Entry<String,String> entry   : entrySet){
                           entry.getKey();
                           entry.getValue();
                }
               
                1.arrayList 中有HashMap
                2.HashMap有 arrayList




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