欢迎来到我的博客

摘要: TreeMap是根据元素的内部比较器进行排序的,它可以根据key值的大小排序; LinkedHashMap是保持存放顺序的。 TreeMap采用红黑树算法,遍历效率高; LinkedHashMap采用链表实现,添加删除时效率高,遍历时效率低。 阅读全文
posted @ 2018-09-30 10:27 八千轮回 阅读(2413) 评论(0) 推荐(0) 编辑
摘要: HashTable是在Java1.0推出的,内部大量使用synchronized同步锁保证线程安全,导致效率低下。HashMap是在Java1.2新集合框架重写时推出的,为了提升性能,而放弃了线程安全。 HashTable不允许存入空Key和空Value。HashMap允许存放空key和空值,当多个 阅读全文
posted @ 2018-09-30 10:27 八千轮回 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 可使用Java 1.5推荐的java.util.concurrent包ConcurrentHashMap来实现,内部不再使用类似HashTable的synchronized同步锁,而是使用ReentrantLock改进读写锁实现线程安全。 阅读全文
posted @ 2018-09-30 10:26 八千轮回 阅读(329) 评论(0) 推荐(0) 编辑
摘要: HashMap底层主要是针对key的算法,与HashSet类似,取key的哈希值模于(modulus)存储空间大小,该模数就是HashMap空间的顺序位置,里面存放了Key值和Value的地址。然而万事无完美,如果两个不同的Key,通过哈希函数得出的实际存储地址相同,那就冲突了。为了存储冲突的多个地 阅读全文
posted @ 2018-09-30 10:25 八千轮回 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 可用使用Collections.sort(List<T> list)和Collections.sort(List<T> list, Comparator<? super T> c)两个排序方法,实际上这种方法排序都需要比较器。 前一个方法是根据内部比较器排序,即List中的元素必须实现Compara 阅读全文
posted @ 2018-09-30 10:21 八千轮回 阅读(449) 评论(0) 推荐(0) 编辑
摘要: 两者都是List接口的实现类,都是线性数据结构。 ArrayList底层采用数组实现,访问特别快,它可以根据索引下标快速找到元素。但添加插入删除等写操作效率低,因为涉及到内存数据复制转移,添加时超过默认容量限制,也会扩容转移数据;LinkedList是采用双向链表结构,每个节点都会有前驱指向上一个节 阅读全文
posted @ 2018-09-30 10:16 八千轮回 阅读(236) 评论(0) 推荐(0) 编辑
摘要: ArrayList底层采用数组实现,访问特别快,它可以根据索引下标快速找到元素。但添加插入删除等写操作效率低,因为涉及到内存数据复制转移。 ArrayList对象初始化时,无参数构造器默认容量为10,当空间不足时会扩容,扩容后的容量是老容量的1.5倍。Java8的ArrayList源代码第259行, 阅读全文
posted @ 2018-09-29 18:30 八千轮回 阅读(197) 评论(0) 推荐(0) 编辑
人生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。