Java基础精讲:第三篇(集合框架到泛型详解

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)

泛型接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值