11、ArrayList和LinkedList的区别
Array(数组)是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的。
Array获取数据的时间复杂度是O(1),但是要删除数据却是开销很大,因为这需要重排列数组中所有的数据,(删除数据后,要将后面的所有的数据前移动)
缺点: 数组初始化必须指定初始化的长度,否则报错。
List是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式,它继承Collection。
List有两个重要的实现类:ArrayList和LinkedList。
ArrayList:可以看作是能够自动增长容量的数组。
ArrayList的toArray方法返回一个数组。
ArrayList的asList方法返回一个列表。
ArrayList底层的实现是Array,数组扩容实现。
LinkedList:是一个双链表,在添加和删除元素时性能比ArrayList更好,但在get与set方面弱于ArrayList。
这些对比主要在数据量大或操作频繁时体现明显。
12、HashMap和Hashtable的区别
1、两者父类不同
HashMap继承自AbstractMap类,Hashtable继承自Dictionary类。不过它们都实现了Map、Cloneable、Serializable三个接口。
2、对外提供的接口不同
Hashtable比HashMap多提供了elements()和contains()两个方法。
elements()方法返回Hashtable中value的枚举;contains()方法判断是否包含某个value,作用与containsValue()一致。
3、对null的支持不同
Hashtable:key和value都不能为null。
HashMap:key可以为null(但只能有一个),可以有多个value为null。
4、安全性不同
HashMap是线程不安全的,多线程下需要开发者手动保证安全。
Hashtable是线程安全的,每个方法都有synchronized关键字。
在多线程环境下推荐使用ConcurrentHashMap,性能比Hashtable更高,因为使用分段锁。
5、初始容量大小和扩容方式不同。
6、计算hash值的方法不同。
13、Collection包结构与Collections的区别
Collection是集合类的上级接口,子接口有Set、List、LinkedList、ArrayList、Vector、Stack等。
Collections是集合类的工具类,包含各种静态方法用于集合的搜索、排序、线程安全化等操作,不能实例化。
14、Java中的四种引用:强、软、弱、虚
强引用:最常见的引用,即使内存不足也不会被回收。
软引用:在内存不足时会被回收,常用于实现缓存。
弱引用:只要被垃圾回收器发现,就会被回收,例如WeakHashMap的key。
虚引用:回收前会被放入ReferenceQueue,可用于对象销毁前的处理工作,如资源释放。
15、泛型常用特点
泛型是Java SE 1.5引入的特性,可以让代码被不同类型的对象重用。
使用泛型的好处:
不必因为元素类型不同而定义多种集合类。
避免类型转换错误,编译期检查类型安全。
代码更简洁可读。
常见用法:
泛型类:如ArrayList
泛型方法:如public void print(T data)
泛型接口
958

被折叠的 条评论
为什么被折叠?



