java数据结构学习
HashTable, HashMap,TreeMap区别
HashTable, HashMap主要区别在于线程安全性,HashTable是线程安全的,另外继承的类不一样,
HashTable继承自Dictionary,实际使用效果差不多。
HashTable不允许空值,HashMap允许空值
Hashmap和Hashtable都是无序的
TreeMap是有序的,而且每个键值对的第一元素及key如果不是基本数据类型,并且实现了Comparable接口,那么可以在这个接口的实现里面自定义比较规则,排序规则
TreeMap的实现算法是红黑树,这是一种特殊的二叉树,比较复杂,后面再研究。TreeMap是主要使用场景是用于需要排序的map
Vector,ArrayList, LinkedList的区别
Vector和ArrayList的实现基本一致,类似StringBuffer和StringBuilder,Vector是线程安全的
LinkedList的内部是链表,Vector和ArrayList内部是数组
链表在开头和末尾写入(包括插入,删除)都快,而且在中间插入,删除也快;但是读一个元素要挨个遍历,比较慢
数组在末尾写入(包括插入,删除)也快,但是开头和中间插入,删除很慢,因为后面的元素都要移动位置;读一个元素很快,因为有编号
String,StringBuffer,StringBuilder的区别
看了StringBuffer和StringBuilder的源码,两者基本一致,
StringBuffer多了几个方法,相同的方法里面每个都加了synchronized关键字,其他都相同。
StringBuffer线程安全,StringBuilder速度快
-------------------------
技术不在于多么高超先进巧妙,而在于要有现实价值!!!
技术不在于多么高超先进巧妙,而在于要有现实价值!!!