Collection
Collection集合是单列集合的顶层接口。Collection表示一组对象,这些对象也称为Collection的元素。该集合的数据结构(简单记就是数据的存储方式)对集合元素有效。
List
元素是有序的,元素可以重复。因为该集合体系有索引。
- ArrayList
底层的数据结构使用的是数组结构。
特点:查询速度很快,但是增删稍慢。 - LinkedList
底层使用的链表数据结构。特点:增删速度很快,查询稍慢。 - Vector
底层是数组数据结构。
Set
元素不可以重复。
- HashSet
元素无序,底层数据结构是哈希表
如何保证元素唯一性呢?
是通过元素的HashCode值相同,才会判断equals方法是否为true
如果元素的HashCode值不同,就不会调用equals方法
注意
对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法
- TreeSet
元素有序,默认按自然顺序,可以对Set集合中的元素进行排序。
底层数据结构是二叉树,保证元素唯一性的依据:compareTo方法return 0。
TreeSet排序的第一种方式:
让元素自身具备比较性,这种方式也成为元素的自然顺序,或者叫做默认顺序。
TreeSet第二种排序方式:
当元素自身不具备比较性时,或者具备的比较性不是所需要的,这时就需要让集合自身具备比较性。
定义一个类,实现Comparator接口,覆盖compare方法。
Map
该集合存储键值对,一对一对往里存,而且保证键的唯一性。
-
Hashtable
底层是哈希表数据结构,不可以存入null键null值,该集合是线程同步的,jdk1.0,效率低。 -
HashMap
底层是哈希表数据结构,允许使用null键和null值,该集合是不同步的,jdk1.2,效率高。 -
TreeMap
底层是二叉树数据结构,线程不同步,可以用于给map集合中的键进行排序。
和Set很想,其实Set底层就是使用了Map集合。 -
map集合的两种取出方式
1、keySet
将map中所有的键存入到Set集合,因为Set具备迭代器,所以可以迭代方式取出所有的键,在根据get方法,获取每一个键对应的值。
2、entrySet
Set<Map.Entry<k,v>> entrySet
将map集合中的映射关系存入到了set集合中,而这个关系的数据类型就是:Map.Entry,其实Entry是Map接口中的一个内部接口。
网友评论