关于java框架的知识
-
Collection接口
Collection可以说是处理对象集合的父接口,其下有两个子接口分别是List和Map。需要注意的是:Map不是Collection的子接口!!这是一定要记住的哟~
Collection接口中的方法如下:
这其中,我们可以看到有几个常用的方法,比如方法add()添加一个元素到集合中,addAll()将指定集合中的所有元素添加到集合中,contains()方法检测集合中是否包含指定的元素,toArray()方法返回一个表示集合的数组。此外,Collection中有一个iterator()函数,它的作用是返回一个Iterator接口。通常,我们通过Iterator迭代器来遍历集合。
Collection接口下的子接口及关联类如下:
补充一点:在Idea中按住ctrl+h快捷键可以查看得到Collection下的所有接口。
(1)Collection的子接口之一 <List接口>
List接口继承于Collection接口,为Collection的直接接口。list集合是有序的,集合中每个元素都有其对应的顺序索引。List集合允许使用重复元素(可重复),可以通过索引Index来访问指定位置的集合元素。实现List接口的集合主要有:ArrayList、LinkedList等。
** ArrayList
-
ArrayList是一个动态数组,也是我们最常用的集合。它允许任何符合规则的元素插入甚至包括null。每一个ArrayList都有一个初始容量(10),该容量代表了数组的大小。随着容器中的元素不断增加,容器的大小也会随着增加。其操作方法 size、isEmpty、get、set、iterator 和 listIterator 操作都以固定时间运行。
-
ArrayList的优点:get和set的调用会花费常数时间。缺点:新项的插入和现有项的删除代价昂贵,除非是在末端进行。
-
ArrayList擅长于随机访问。同时ArrayList是非同步的。
** LinkedList
- 实现List接口的LinkedList与ArrayList有所不同,ArrayList是一个动态数组,而LinkedList是一个双向链表!所以LinkedList除了有ArrayList的基本操作方法外还提供get,remove,insert等方法在LinkedList的首部或尾部。
- LinkedList的优点:新项的插入和现有项的删除开销很小。缺点:对get和set的调用昂贵。ps:为什么说新项的插入和现有项的删除开销很小? 因为双向链表,都有一个previous和next, 链表最开始的部分都有一个first和last 指向第一个元素,和最后一个元素。增加和删除的时候,只需要更改一个previous和next,就可以实现增加和删除,所以说,LinkedList对于数据的删除和增加相当的方便。
- LinkedList不能随机访问,LinkedList也是非同步的。
(2)Collection的子接口之二 <Set接口>
Set接口的特性是不保存重复的元素,没有顺序。Set与List一样,它同样允许null的存在但是仅有一个。由于Set接口的特殊性,所有传入Set集合中的元素都必须不同。Set接口有三个具体实现类,分别是散列集HashSet、链式散列集LinkedHashSet和树形集TreeSet。
** HashSet
- 速度最快,没有明显的顺序保存元素。集合元素可以是null,但是只能有一个null。
** Set
- 按照比较结果的升序保存对象,
** LinkedHashSet
- 按照被添加的顺序保存对象。