刘鹏:
栈的特点: 先进后出 (FILO,First In Last Out) 入口和出口在同一侧 入栈(压栈): 将元素存入栈 出栈(弹栈): 从栈中取出元素 栈的适用场景: 栈内存 (main方法先进栈调用, main方法中的其他方法都调用完毕后, main才能出栈) 反转内容 (车尾变车头, 进去再出来就反转了) 队列的特点: 先进先出 (FIFO,First In First Out) 入口和出口在两端 队列的适用场景: 秒杀, 抢购 在线售票 处理高并发场景 数组的特点: 查询快: 通过 (第一个元素地址值 + 索引) 可以快速计算出该索引元素的地址值 增删慢: 增加一个元素, 要创建长度+1的新数组, 然后将原数组元素复制到新数组, 然后存入新元素; 删除类似 数组的适用场景: 查询多, 增删少的数据存储场景 国内城市 链表的特点: 查询慢: 要找到其中某个节点, 只能从第一个节点一个一个向后寻找 增删快: 只需要修改保存的下一个节点的地址值, 就可以快速完成增删 ArrayList底层的数据结构: 数组 ArrayList的特点: 查询快 增删慢 线程不安全, 效率高 ArrayList适用场景: 存储的数据"查询多, 增删少"的场景. 如用一个ArrayList存储中国城市名称 Map集合特点: 1.是双列集合, 一个元素包含两个值 (键key, 值value) 键值对 2.key和value的类型可以相同, 也可以不同 3.key不允许重复, value可以重复 4.key和value是一一对应的, 一个键只能对应一个值 java.util.Map<K, V>接口: 双列集合的根接口, 规定了共性的方法 | |_HashMap<K, V>类: 底层哈希表. key存取无序不可重复 |_LinkedHashMap<K, V>类: 底层哈希表+链表. key存取有序不可重复 映射: 键和值的对应关系 mapping HashSet底层使用的就是HashMap LinkedHashSet底层使用的就是LinkedHashMap keySet()遍历步骤: 1.Map对象调用 keySet() 方法, 获取包含所有key的Set集合 2.遍历Set集合, 获取每个key 3.通过Map对象调用 get(Object key) 方法根据key获取到value java.util.Map.Entry接口: //常用成员方法 K getKey():获取Entry对象中的键 V getValue():获取Entry对象中的值 entrySet()方法遍历Map步骤: 1.Map对象调用 entrySet() 获取包含所有Entry对象的Set集合 2.遍历Set集合, 获取每个Entry对象 3.调用Entry对象的getKey() 和 getValue() 方法获取键和值
|