摘要:
一、前言 之前的List,讲了ArrayList、LinkedList,反映的是两种思想: (1)ArrayList以数组形式实现,顺序插入、查找快,插入、删除较慢 (2)LinkedList以链表形式实现,顺序插入、查找较慢,插入、删除方便 那么是否有一种数据结构能够结合上面两种的优点呢?有,答案 阅读全文
摘要:
一、前言 LinkedList是基于链表实现的,所以先讲解一下什么是链表。链表原先是C/C++的概念,是一种线性的存储结构,意思是将要存储的数据存在一个存储单元里面,这个存储单元里面除了存放有待存储的数据以外,还存储有其下一个存储单元的地址(下一个存储单元的地址是必要的,有些存储结构还存放有其前一个 阅读全文
摘要:
一、ArrayList的数据结构 ArrayList底层的数据结构就是数组,数组元素类型为Object类型,即可以存放所有类型数据。我们对ArrayList类的实例的所有的操作(增删改查等),其底层都是基于数组的。 定义底层数据结构:Object[] elementData The capacity 阅读全文
摘要:
枚举 这就定义了SUNDAY~SATURDAY的枚举了。 上面的EnumDay其实隐含了所创建的类型都是java.lang.Enum类的子类,枚举类型符合通用模式Class Enum<E extends Enum<E>>,E表示的就是枚举类型的名称。枚举类型的每 一个值都将映射到protected 阅读全文
摘要:
为什么要使用异常 在没有异常处理的语言中,就必须使用if或switch等语句,配合所想得到的错误状况来捕捉程序里所有可能发生的错误。但为了捕捉这些错误,编写出来的代码经常有很多的if语句,有 时候这样也未必能捕捉到所有的错误,而且这样做势必导致程序运行效率的降低。Java的异常处理机制恰好改进了这一 阅读全文
摘要:
Comparable Comparable可以认为是一个内部比较器,实现了Comparable接口的类有一个特点,就是这些类是可以和自己比较的,在compareTo方法中指定具体的比较方法。 compareTo方法的返回值是int,有三种情况: 1、比较者大于被比较者(也就是compareTo方法里 阅读全文
摘要:
hash hash就是散列的意思,就是把任意长度的输入,通过散列算法变换成固定长度的输出,该输出就是散列值。关于散列值,有以下几个关键结论: 1、如果散列表中存在和散列原始输入K相等的记录,那么K必定在f(K)的存储位置上 2、不同关键字经过散列算法变换后可能得到同一个散列地址,这种现象称为碰撞 3 阅读全文
摘要:
参考资料: 从为什么String=String谈到StringBuilder和StringBuffer 阅读全文
摘要:
概念 序列化:把对象转换为字节序列的过程称为对象的序列化。 反序列化:把字节序列恢复为对象的过程称为对象的反序列化。 对象的序列化主要有两种用途: 1.把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 2.在网络上传送对象的字节序列。 在很多应用中,需要对某些对象进行序列化,让它们离开内存 阅读全文
摘要:
静态变量和静态方法 static关键字的基本用法: 1.修饰变量:被static修饰的变量属于类变量,可以用类名.变量名来引用,而不用直接new一个对象来引用。 2.修饰方法:被static修饰的方法属于类方法,可以用类名.方法名来引用,而不用直接new一个对象来引用。 被static修饰的变量和方 阅读全文