JavaSE之集合类,
分享于 点击 23412 次 点评:155
JavaSE之集合类,
你了解集合框架?
集合框架概念
集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容:
- 接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象
- 实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap
- 算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。
开始探讨集合类!!!!!!
在探讨之前我先放个集合类的大概逻辑图:
开始啦!!!!!
Collection结合接口
该接口常用的方法:
List(允许数据重复)
- public E get(int index)——-根据索引取得保存数据
public E set(int index,E element)——-修改数据
重点来啦!!!
三个子类:
- ArrayList子类
该类也是实现了List的接口,实现了可变大小的数组,随机访问和遍历元素时,提供更好的性能。该类也是非同步的,在多线程的情况下不要使用。ArrayList 增长当前长度的50%,插入删除效率低。 - Vector子类
该类和ArrayList非常相似,但是该类是同步的,可以用在多线程的情况,该类允许设置默认的增长长度,默认扩容方式为原来的2倍 LinkedList
极其重要!!!!!!
请解释ArrayList与Vector的区别
历史时间:ArrayList是从JDK1.2提供的,而Vector是JDK1.0提供的
- 处理形式:ArrayList是异步处理,性能比较高,而Vector是同步处理,性能比较低
- 数据安全:ArrayList是非线程安全,Vector是性能安全
- 输出形式:ArrayList支持Iterator、ListIterator、foreach;Vector支持Iterator、ListIterator、foreach、Enumeration
请解释ArrayList与LinkedList区别
- ArrayList封装的是数组,LinkedList封装的是链表
ArrayList时间复杂度为1,而LinkedList的复杂度为n
Set集合接口
两个子类:
- HashSet(无需存储)
TreeSet(有序存储)
面试题:
- 如果两个对象的hashCode()同,equals()不同结果是什么?
不能消除 - 如果两个对象的hashCode()同,equals()相同结果是什么?
不能消除
集合输出
四种手段:
- Iterator(迭代)
- ListIterator(双向迭代)
- 判断是否有上一个元素:public boolean hasPrevious();
- 取得上一个元素:public E previous();
- 如果要想进行双向迭代,那么就必须依靠Iterator 的子接口
- Enumeration(枚举)
要想取得这个接口的实例化对象,是不能依靠Collection、List、Set等接口的。只能够依靠Vector子类,因为 Enumeration最早的设计就是为Vector服务的,在Vector类中提供有一个取得Enumeration接口对象的方法:
foreach
Map集合
常用的方法:
常用的四个子类:
- Hashtable
- HashMap
请解释HashMap与Hashtable的区别
- TreeMap
- ConcurrentHashMap
相关文章
- 暂无相关文章
用户点评