java 基础之数据集合

1.为什么集合类没有实现Cloneable和Serializable接口?

克隆(cloning)或者是序列化(serialization)的语义和含义是跟具体的实现相关的。因此,应该由集合类的具体实现来决定如何被克隆或者是序列化。

2.Iterator和ListIterator的区别是什么?

Iterator可用来遍历Set和List集合,但是ListIterator只能用来遍历List。
Iterator对集合只能是前向遍历,ListIterator既可以前向也可以后向。
ListIterator实现了Iterator接口,并包含其他的功能,比如:增加元素,替换元素,获取前一个和后一个元素的索引,等等

3.快速失败(fail-fast)和安全失败(fail-safe)的区别是什么?

Iterator的安全失败是基于对底层集合做拷贝,因此,它不受源集合上修改的影响。java.util包下面的所有的集合类都是快速失败的,而java.util.concurrent包下面的所有的类都是安全失败的。快速失败的迭代器会抛出ConcurrentModificationException异常,而安全失败的迭代器永远不会抛出这样的异常。

4. 集合与数组的区别

①数组长度是固定的,不能自动增长

集合长度是可以改变的,随着元素的增加而增加随着元素的减少而减少

②数组既可以存储基本数据类型也可以存储引用数据类型(对象)

集合只能存储引用数据类型,也可以存储基本数据类型,不过他会将基本数据类型封装成对象

 5.集合分为单列集合和双列集合

6.泛型<定义存储什么数据类型>

泛型最好不要定义object,无意义

好处:

①将运行期的出意外转到编译期

②省去了强转的麻烦

使用概述

①泛型可以自己指定类型,但是在new对象时候给定指定类型

②方法泛型需要与类泛型一致,如果不一致需要在方法上指明该泛型,只要在使用时候传值即可

③静态方法中需要声明自己的泛型

④泛型接口

方式一:public class Demo implements interface<用类实现时需要指定类型>----------------------推荐

方式二:public class Demo<T> implements interface<T>

原文地址:https://www.cnblogs.com/fanfusuzi/p/6824336.html