标签:
今天工作中遇到了LinkedHashMap,于是就百度下它和HashMap的区别,LinkedHashMap遍历的话是有顺序的,遍历的话是以存储的顺序输出,HashMap遍历是没有顺序的,线程不安全的,可以同时写,并且key可以有一个为null,value可以有多个为null,HashTable是线程安全的,key和value都不可以为null。实现HashMap同步:Map<String String> map = Collections.synchronizedMap(new LinkedHashMap(<String String)); TreeMap可以把保存的记录按键值排序。
顺便再回忆下 ArrayList和Hashset和LinkedList的区别:(以下为复制粘贴至http://bbs.csdn.net/topics/390337625?page=1)
List:元素是有顺序的,元素可以重复因为每个元素有自己的角标(索引)
|-- ArrayList:底层的数据结构是数组结构,特点是:查询很快,增 删 稍微慢点,线程不同步
|-- LinkedList:底层使用的是链表数据结构,特点是:增 删很快,查询慢。
|--Vector:底层是数组数据结构,线程同步,被ArrayList代替了,现在用的只有他的枚举。
Set:元素是无序的,且不可以重复(存入和取出的顺序不一定一致),线程不同步。
|--HashSet:底层是哈希表数据结构。根据hashCode和equals方法来确定元素的唯一性
|--TreeSet:可以对Set集合中的元素进行排序(自然循序),底层的数据结构是二叉树,也可以自己写个类实现Comparable 或者 Comparator 接口,定义自己的比较器,将其作为参数传递给TreeSet的构造函数。
标签:
原文地址:http://www.cnblogs.com/52-it/p/4430676.html