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速度快

猜你喜欢

转载自www.cnblogs.com/geektcp/p/9912429.html