| 有序否 | 允许元素重复否 | |
Collection | 否 | 是 | |
List | 是 | 是 | |
Set | AbstractSet | 否 | 否 |
HashSet | |||
TreeSet | 是(用二叉树排序) | ||
Map | AbstractMap | 否 | 使用key-value来映射和存储数据,Key必须惟一,value可以重复 |
HashMap | |||
TreeMap | 是(用二叉树排序) |
几个面试常见问题:
1.Q:ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?
2.Q:大致讲解java集合的体系结构
3.Q:Comparable和Comparator区别
4.Q:简述equals()和hashCode()
public interface
Collection
public interface
List
public abstract class
AbstractList
public class
Vector
基于Array
是“sychronized”的
public class
ArrayList
基于Array
ArrayList是非同步的。所以在性能上要比Vector优越一些
public class
LinkedList
不基于Array
基于Array的List(Vector,ArrayList)适合查询,而LinkedList(链表)适合添加,删除操作
List基本上都是以Array为基础。但是Set则是在HashMap的基础上来实现的,这个就是Set和List的根本区别
public abstract class
public class
HashSet的存储方式是把HashMap中的Key作为Set的对应存储项
public class
public class
它是通过SortedMap来实现的
public interface
public abstract class
public class
public class
HashMap通过hashcode对其内容进行快速查找,而TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)
更详细的可以看:
http://www.frontfree.net/view/article_695.html
http://blog.csdn.net/happyzhm5/archive/2007/03/17/1532101.aspx
http://blog.csdn.net/Java_apprentice/archive/2007/07/20/1700351.aspx