《数据结构与算法——Java语言描述》笔记

《数据结构与算法——Java语言描述》,动物书中的鸟书,原书名为 Think Data Structures

第一章 —— 接口

此章给出一代码示例:

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class ListClientExample {
// 告诉编译器忽略指定的警告,不用在编译完成后出现警告信息。
@SuppressWarnings("rawtypes")
private List list;

@SuppressWarnings("rawtypes")
public ListClientExample() {
list = new ArrayList();
}

@SuppressWarnings("rawtypes")
public List getList() {
return list;
}

public static void main(String[] args) {
ListClientExample lce = new ListClientExample();
@SuppressWarnings("rawtypes")
List list = lce.getList();
System.out.println(list);
}
}

这串代码的写法封装了List类的基本元素,尽可能使用List,并且避免定义ArrayList或者LinkedList,好处是在需要更改List类型的时候,只需对构造方法进行简单更改,而不需要进行其他修改。

这种方式被称为基于接口的编程(面向接口编程)。

Note:曾经在我看来这种写法只是一种经验,代表更好的写法,代码写多了自然会掌握这种写法。没想到前人已经总结的这么好,还是要学会虚心学习,要学会站在巨人的肩膀上看世界啊!

第二章 —— 算法分析

没啥总结的,不少在ACM中都认识过。习题倒是有点不习惯(挺有趣),需要重写一些常见的方法。

第三章 —— ArrayList类 & 第四章 —— LinkedList类

一步一步指导,分别实现两个类中的基本方法,我对照过REDHAT JDK1.8源码,与其实现原理是差不多的。

文中给出了基于两个类的实例运行的对比,三言两语描述怕有纰漏,还是不写了。

为什么Java提供了不止一个实现,因为它取决于你的操作。

0%