String/StringBuffer/StringBuilder的区别?
:
String常量不可变,用于字符串拼接,占内存,耗时间,底层不一样。
API一样都是通过缓存区储存,要用时在调用。
StringBuffer:线程安全的可变字符序列。速度较慢
StringBuilder:线程不安全的可变字符序列。速度最快
ArrayList / Vector的区别?
:
底层一样都是数组,都实现于List
Vector线程安全
ArrayList没有考虑线程安全问题,但是算法优化,效率更快
LinkedList / ArrayList的区别?
:
底层不一样
LinkedList底层是通过链表实现,删除和插入速度更快,有自己独有的首位操作方法(addFirst,addLast,removeLast,removeFirst)
ArrayList是底层数组中效率最快的,缺点线程不安全
List接口 / Set接口的区别?
:
List:有序,有下标,可以重复
set:无序,没有下标,不能重复
:
原理通过hash算法实现
链表: