Collections工具类
- Collections是一个操作Set、List和Map等集合的工具类
- Collections中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象设置不可变、对集合对象实现同步操作等方法
- 排序操作:(均为static方法)
- reverse(List):反转List中元素的顺序
- shuffle(List):对List集合元素进行随机排序
- sort(List):根据元素自然排序对指定List集合元素按升序排序
- sort(List,Comparator):根据指定的Comparator产生的顺序对List集合元素进行排序
- swap(List,int,int):将指定list集合中的i处元素和j处元素进行交换
- 查找、替换:
- Object max(Collection):根据元素的自然排序,返回给定集合中的最大元素
- Object max(Collection,Comparator):根据Comparator指定的顺序,返回给定集合中的最大元素
- Object min(Collection):根据元素的自然排序,返回给定集合中的最小元素
- Object min(Collection,Comparator):根据Comparator指定的顺序,返回给定集合中的最小元素
- int frequency(Collection,Object):返回指定集合中指定元素的出现次数
- void copy(List dest,List src):将src中的内容复制到dest中。(复制集合操作)
- boolean replaceAll(List list,Object oldVal,Object newVal):使用新值替换List对象中的所有旧值
- 同步控制
- Collections类中提供了很多synchronized(Xxx)方法,该方法可使将指定集合包装成线程同步的集合,从而可以解决多线程并发方法集合时的线程安全问题
- synchronizedCollection(Collection c)
- synchronizedList(List list)
- synchronizedMap(Map<K,V> m);
- synchronizedSet(Set set)
- synchronizedSortedMap(SortedMap<K,V> m)
- synchronziedSortedSet(SortedSet set)
- Collections类中提供了很多synchronized(Xxx)方法,该方法可使将指定集合包装成线程同步的集合,从而可以解决多线程并发方法集合时的线程安全问题
数据结构简述
- 为什么要讲数据结构?
- 数据结构,就是一种程序设计优化的方法论,研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,目的是加快程序的执行速度,减少内存占用的空间
- 程序能否快速而高效地完成预定的任务,取决于是否选对了数据结构,而程序是否能清楚而正确的把问题解决,则取决于算法。算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机确切的步骤来执行一个指定的任务。
- 所以大家任务“Algorithms+Data Structures = Programs” 算法+数据结构 = 程序(Pascal之父 Nicklaus Wirth)
- 数据结构只是静态的描述了数据元素之间的关系
- 高效的程序需要在数据结构的基础上设计和选择算法
- 总结:
- 算法是为了解决实际问题而设计的,数据结构是算法需要处理的问题载体,算法要在数据结构的基础上设计如何解决实体问题。
- 数据结构的研究对象
- 数据间的逻辑结构
- 集合关系
- 数据元素之间只有“同属于一个集合”的关系
- 线性关系:
- 数据元素之间存在一个对一个的关系
- 对应Java中的线性表、顺序表、链表、栈、队列
- 数据元素之间存在一个对一个的关系
- 树形结构
- 数据元素之间存在一个对多个的关系
- 对应Java中的数。比如二叉树
- 数据元素之间存在一个对多个的关系
- 网状结构(或图状结构)
- 数据元素之间存在多个对多个的关系
- 对应Java中的图
- 数据元素之间存在多个对多个的关系
- 集合关系
- 数据的存储结构(或物理结构)
- 真实结构
- 线性表之顺序表(或静态数据结构):数据(Array)、ArrayList
- 线性表之链表(或动态数据结构):LinkedList
- 抽象结构
- 栈(Stack)
- 队列(Queue)
- 树(Tree)
- 图
- 其他
- 真实结构
- 数据间的逻辑结构
Map面试题及总结
- Map存储数据的特点是什么?并指明key、value、Entry存储数据的特点
- Map存储的是双列数据,key-value键值对
- key的特点:无序的,不可重复的 --》Set存储
- value的特点:无序的、可重复的 --》Collection存储
- Entry的特点:无序的、不可重复的–》Set存储
- 描述HashMap的底层实现原理(jdk 8版)
- 在jdk 1.8总HashMap使用的是数组+链表+红黑树实现的。
- Map中常用实现类有哪些?各自有什么特点?
- HashMap,是map的主要实现类,线程不安全的,jdk1.8中使用数组+链表+红黑树
- LinkedHashMap 是HashMap的子类,在HashMap的基础上,增加了before和after属性,用来实现Map访问的有序性,按照添加顺序排序
- Hashtable,古老的map实现类,线程安全的
- Properties,继承于Hashtable,key和value都是String类型的,用于处理配置文件
- TreeMap,保证添加的key-value可以进行排序,按照自然排序或者定制排序
- 如何遍历Map中的key-value对
- 使用keySet()方法,根据key的Set集合循环遍历
- Collection和Collections的区别
- Collection是集合类的父接口
- Collections是集合类的工具类,提供了对集合的排序,获取,同步等操作