标签:
Map与Collection是并列的,都是集合框架的顶层。
Map集合也称为双列集合,Collection称为单列集合。
Map集合中存储的是键值对,一个Map集合中不能有重复的键。 C#中是Dictionary对象
Map
|--HashTable 内部结构是哈希表,是同步的。JDK1.0 就有
|--Properties用来存储键值对形式的数据,常用来做配置文件。可以和IO技术相结合。
|--HashMap:内部结构是哈希表,不同步的
|--LinkedHashMap
|--TreeMap 内部结构是二叉树,不同步的,可以对map集合中的键进行排序。
HashTable 与HashMap区别:HashTable不允许null作为键,值,HashMap运许null作为键,值
早期集合的架构是:HashTable与Vector 都是同步的
现在集合的架构是:Map 与Collection 都是不同步的
集合的一些技巧:
需要唯一吗?
需要:Set
需要指定顺序吗?
需要:TreeSet
不需要:HashTree
如果是需要一个和存储顺序一致的用LinkedHashSet
不需要:List
需要频繁增删吗?
需要:LinkedList
不需要:ArrayList
List
|--LinkedList
|--ArrayList
Set
|--TreeSet
|--HashSet
|--LinkedHashSet
后缀名是该集合所属体系,前缀名是该集合数据结构
看到Array,就要想到数组,就要想到角标。查询速度快
看到Link,就要想到链表,就要想到增删快,
看到Hash,就要想到哈希表,就要想到唯一性,就要想到元素需要覆盖hashCode方法和equals方法
看到Tree,就要想到二叉树,就要想到排序,就要想到两个接口,Comparator,Comparable
这些集合都是不同步的,
集合中只有Vector是同步的,
Iterator迭代过程中,集合不能增删操作,容易引发异常
List集合有个方法可以获得ListIterator。该接口中提供了增删的功能,可以在迭代过程中增删操作。只有List才有这个功能。ListIterator
标签:
原文地址:http://www.cnblogs.com/lxboy2009/p/5914726.html