本帖最后由 李铁 于 2012-10-29 12:53 编辑
下面是我的学习日记里整理的,参考一下!
collection
|--List:元素是有序的,元素可以有重复,因为该集合体系有索引。
|--ArrayList
底层数据结构是数组,线程不安全。
增删慢,查询快。
|--Vector
底层数据结构是数组,线程安全。
增删慢,查询快。但是,线程安全,效率就低。所以查询也慢。
|--LinkedList
底层数据结构是双向链表,线程不安全。
增删快,查询慢
| -- Set:元素是无序(存入与取出的顺序不一定一致),不可重复的。
|--HashSet:底层数据是哈希表,线程是非同步的。
HashSet是如何保证元素的唯一性的呢?
是通过两个元素的hashcode和equals来完成的,
如果元素的hashcode的值相同,才会判断equals是否为true,
如果元素的hashcode的值不同,不会调用equals方法。
注意:对于判断元素的是否存在,以及删除操作,依赖的方法是元素的hashcode与equals方法
|--TreeSet:可以对Set集合中的元素进行排序,底层数据是二叉树;保证元素的唯一性的依据,compareTo方法return 0。
TreeSet的第一种排序方式:让元素自身具备比较性,元素需要实现compareble接口,
覆盖compartTo方法;也叫元素的自然顺序,或者是默认顺序。
TreeSet的第二种排序方式:当元素自身不具备比较性,或者具备的比较不是所需要的;
这时需要让容器自身具备比较性。
定义一个类,实现comparator接口,覆盖compare方法。
当两种排序都存在的时候,以比较器为主;开发建议使用第二种排序。
注意当排序时,当主要条件相同时,一定判断一下次要条件。
Map:该集合储存键傎对,一对一的往里存,而且要保持键的唯一性。
|--HashTable:底层是哈希表数据结构,不可以存入null键null值,该集合是线程同步的,jdk1.0;效率低!
|--HashMap:底层是哈希表数据结构,允许使用入null键null值,该集合是不同步的,将HashTable代替,jdk1.2,效率高!
|--TreeMap: 底层是二叉树数据结构,线程不同步;可以用于给Map集合中的键进行排序。和set很像,set底层就是用了Map集合。
|