黑马程序员技术交流社区

标题: 集合框架的粗浅小小总结,欢迎来增加,提意见 [打印本页]

作者: 闭关修行小和尚    时间: 2016-1-3 23:54
标题: 集合框架的粗浅小小总结,欢迎来增加,提意见
集合框架分为两大派系:
|--单列集合 Coloection
        |-- List 有序,可重复,元素都有索引值
                |-- ArrayList         底层是数组数据结构,查询速度快,增删稍慢,线程不安全的
                |-- LinkedList        底层是链表数据结构,增删速度快,查询稍慢,线程不安全的
                |-- Vector            底层是数组数据结构,查询相对于ArrayList慢,增删相对于LinkedList慢,线程安全的,jdk1。0时出现,后来被ArrayList替代
        |-- Set  无序,不可重复,因为底层是封装的一个Map集合,它使用了Map的key,丢弃了Map的vlaue,所以必须保证元素的唯一性。
                |-- HashSet   底层是哈希表数据结构,线程不安全的,无序高效,必须保证元素的唯一性,依赖于hashCode()和equals()方法
         |-- LinkedHashSet 是存取有序的,底层是链表数据结构,元素唯一的原理和HashSet一样
                |-- TreeSet   底层是二叉树数据结构,线程不安全的,可以对存入的数据进行排序,但是必须保证元素的唯一性,否则会导致元素覆盖
                     要使用TreeSet集合对元素进行排序,前提是必须让元素具备可比性,有两种方式:
                                (1) 让元素自身具备比较性,也就是让元素实现Comparable接口并覆盖compareTo()方法来指定比较规则
                                (2) 如果元素自身不具备比较性或者具备的比较性不是所需要的,我们可以定义一个比较器,也就是实现Comparator接口并覆盖compare()                                                                方法来指定比较规则,通过TreeSet的构造方法传递给集合即可。
|--双列集合 Map
        |-- HashMap   底层是哈希表数据结构,线程不安全的,可以存储null键null值,数据是以键值对的形式存储的,键和值之间存在着映射关系。
        |-- Hashtable 底层是哈希表数据结构,线程安全的,不可以存储null键null值,jdk1。0时出现,后来被HashMap替代
        |-- TreeMap   底层是是二叉树数据结构,线程不安全的,可以对集合中的key进行排序,排序方式和TreeSet相同

|-- Iterator迭代器:要遍历集合,则需要使用到Iterator接口,也就是迭代器,调用集合的一个iterator方法返回的就是一个Iterator迭代器,通过该迭代器的hasNext()和next()方法        就可以循环得到集合中的每一个元素。foreach循环底层也是使用迭代器实现的。
        |-- List集合特有的遍历方式:普通for循环集合get(index)和size()方法实现遍历。另外List集合还有ListIterator可以实现向前遍历,前提是先向后遍历过。
        |-- Map集合本身是没有迭代器的,要想迭代该集合中的元素有两种方式:
        (1)调用该集合的keySet方法返回的是集合中所有的key的Set集合,再使用Set集合的迭代器对返回的Set集合进行迭代,再通过Map集合的get(key)方法获取key对应        的value值
        (2)调用该集合的entrySet方法返回的是Map集合中键和值的眏射关系,数据类型为Map。Entry,在迭代返回的Set集合获取每一个键和值的眏射关系,在调用Map。Entry        的getKey()和getValue()方法回去对应的键和值


作者: 小五哥    时间: 2016-1-4 00:57
不会,路过打个酱油




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2