2,集合的分类及特点Collection:|——list:元素是有序的,元素可以重复,因为该集合体系有索引。取元素方式有两种:一种是for循环,一种是迭代器。
ArrayList:底层数组结构,特点:增加删除比较慢,查询速度快,线程不同步。
linkedList:底层是链表结构,特点:增加删除比较快,查询速度慢。
特有方法:addFirst();addLast();getFirst();getLast();获取元素,但不删除元素。如果没有元素会出现NoSuchElementException removeFirst();removeLast();获取元素,但是元素被删除。如果没有元素会出现NoSuchElementException在JDK1.6出现了替代方法。
OfferFirst();OfferLast();peekFirst();peekFirst();获取元素,但不删除元素。如果没有元素不会出现NoSuchElementException pollFirst();pollLast();获取元素,但是元素被删除。如果没有元素不会出现NoSuchElementException vector:底层是数组结构。线程同步。增删改查速度都慢。被ArrayList代替。
枚举是vector特有的取出方式,vector有三种取出方式。枚举和迭代器很像。
其实枚举和迭代是一样的,因为枚举的名称以及方法的名称比较长,被迭代器取代了。
|——set:元素是无序,元素不重复。Set集合的方法和Collection是一致的。
|——HashSet:底层结构式哈希表。
在对HashSet集合存储元素的时候,首先调用hashCode()方法获得给对象的哈希值,当以后加入元素时,也是首先获得该元素的哈希值,然后跟集合中已有元素的h哈希值比较,如果哈希值不等,不会调用equals()方法,元素存储成功。如果新加元素和已有某个元素的哈希值相同,在调用equals()判断是否为同一元素,做进一步的判断,这个可以根据自己的条件复写hashCode()和equals()。HashSet集合对元素不会进行默认排序。
注意:对于判断元素是否存在,以及删除等操作,依赖的方法是元素hashCode和equals |——TreeSet:可以对set集合中的元素进行排序。TreeSet集合中的元素要具备比较性,存储多个不具备比较性的元素,编译时会报错。是元素具备比较性的方式有两种:实现comparable接口和在创建集合时传递比较器comparator.
作者 sdtarena