教材学习内容总结
1.泛型
可以建立具体类型的安全的集合框架,如链表、散列表等数据结构
优点:不比进行强制类型转换,即不要求进行运行时类型检查
1.1泛型类的声明
class 泛型类名<泛型列表>(泛型列表可以是任何对象和接口,但不能是基本类型数据)
泛型列表的类型作为下列变量方法的类型 | |
类的成员变量 | |
类的方法 | |
局部变量 |
泛型类体和普通类的类体完全相同(由成员变量和方法构成)
1.2使用泛型类声明对象
泛型类名<具体的类型名> 对象名
2.链表(动态地减少或增加数据项)
链表是若干个称作结点的对象组成的一种数据结构,每个结点含有一个数据和下一个结点的引用,或含有一个数据并含有上一结点的引用和下一个结点的引用。
2.1LinkedList<E>泛型类
LinkedList<E>泛型类创建的对象(链表对象)以链表结构存储数据
例:LinkedList<E> mylist=new LinkedList<String>() | |
声明创建链表 | 指定E的具体类型 |
链表使用add(E obj)方法 | 向链表依次增加结点 |
2.2遍历链表
get(int index) | 遍历熟读慢 |
使用迭代器 | |
链表对象使用itertor()方法 | 获取一个Iterator对象=迭代器 |
2.3排序和查找
Collections类提供用于排序和查找的类方法:
public static sort(List<E> list) | 可以将list中的元素按升序排序 |
int binarySearch(List<T>list,T key,CompareTo<T> c) | 使用折半法查找list是否含有和参数key相等的元素,如果有,则返回和key相等的元素在链表中的索引位置(链表的索引位置从0开始),否则返回-1 |
查找
String类实现了Comparable接口,规定了字符串按字典序比较大小
如果链表中存放的对象不是字符串对象,创建对象的类必须实现Comparable接口,接口方法intcompareTo(Object b)规定对象大小关系
2.4洗牌与旋转
public static void shuffle(List<E> list) | 将list中的数据按洗牌算法重新随机排列 |
static void rotate(List<E>list,int distance) | 旋转表中数据,当参数distance取正值时,向右转list中的数据,反之向左转 |
public static void reverse(List<E>list) | 翻转list中的数据 |
3.堆栈
“后进先出”的数据结构,只能在一端进行输入(“压栈”)或输出(删除、“弹栈”)数据的操作
优点:节省内存开销
压栈 | public E push(E item) |
弹栈 | public E pop() |
判断堆栈是否有数据,有数据返回true | public Boolean empty() |
获取栈端的数据(但不删除) | public E peek() |
获取数据在堆栈中的位置(最顶位置为1,没有返回-1) | public int search(Object data) |
4.散列映射
HashMap<K,V>泛型类创建的对象称为散列映射
常用方法:
public void clear() | 清空散列映射 |
public Object clone() | 返回当前散列映射的一个克隆 |
public boolean containsKey(Object key) | 如果散列映射有键/值对使用了参数指定的键,方法返回true |
public boolean containsValue(Object key) | 如果散列映射有键/值对的值是参数指定的值,方法返回true |
public V get(object key) | 返回散列映射中使用key做键的键/值对中的值 |
public boolean isEmpty() | 如果散列映射不含任何、键/值对,方法返回true |
public V remove(Object key) | 删除散列映射中键为参数指定的键/值对,并返回键对应的值 |
public int size() | 返回散列映射的大小,即散列映射中键/值对的数目 |
遍历散列映射
public Collection<V>values()--返回->实现了Collection<V>接口类创建的对象,Collection<V>接口变量=对象的引用,接口变量.interator()---获取->Iterator对象-----存放散列映射中所有键/值对的值
5.树集
5.1TreeSet<E>泛型类
TreeSet<E> 对象名=new TreeSet<E>();对象称作树集---->采用树结构存储数据,树节点中的数据会按存放的数据的“大小”一层层地依次排列(同一层从左到右按字典从小到大递增排序)
5.2结点大小关系
树集中的任何两个字符串对象知道怎么比较大小(字符串对象.compareTo(String s))
上层比下层的小
5.3TreeSet类的常用方法
public boolean add(E o) | 向树集添加结点,结点中的数据由参数指定,添加成功返回true |
public void clear() | 删除树集中的左右结点 |
public void contains(Object o) | 如果树集中有包含参数指定的对象,该方法返回true |
public E first/last() | 返回树集中的第一个//最小(最后一个/最大))结点中的数据 |
public boolean isEmpty() | 判断是否为空树集(数集不含任何结点返回true) |
public boolean remove(Object o) | 删除数集中的存储参数指定的对象的最小结点 |
public int size() | 返回树集中结点的数目 |
6.树映射
TreeMap<K,V>类实现了Map<K,V>接口,称为TreeMap<K,V>对象为树映射(结点存储字/值对)
public V put(K key,V value)添加结点
与树集不同:树映射保证结点是按照结点中的关键字升序排列。
7.自动装箱与拆箱
java1.5后允许把基本数据类型添加到类似链表等数据结构中,系统会自动完成基本数据类型---- 转换-->相应对象(自动装箱)
当一个数据结构中获取对象时,如果该对象是基本数据的封装对象,系统自动完成对象---转换--->基本类型
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
目标 | 5000行 | 20篇 | 400小时 | 会用java语言独立设计程序 |
第一周 | 13/13 | 1/1 | 5/5 | 学会使用jdk以及对java源程序语句的基本注意事项有所了解 |
第二周 | 140/143 | 1/2 | 10/15 | 学会java基本数据类型与数组和c语言/c++在表达和用法上的相同/不同之处 |
第三周 | 276/419 | 1/3 | 20/35 | java中运算符,表达式和语句的表现形式,类的声明,定义方法 |
第四周 | 600/1019 | 1/4 | 30/45 | 类和对象 |
第五周 |
150/1169 | 1/5 | 10/55 | 继承的作用,子类和父类的继承性,子类继承父类后方法的访问权限以及各种操作 |
第六周 | 100/1269 | 1/6 | 8/63 | 接口定义、使用方法和作用 |
第七周 | 100/1369 | 1/7 | 9/72 | 内部类(独有)包含匿名类和异常类(检测)的使用方法和作用 |
第八周 | 150/1869 | 1/8 | 10/82 | java常用实用类和方法 |
第九周 | 100/1969 | 1/9 | 20/102 | 组件、容器、窗口、(如何处理事件:事件源,监视器、接口) |
第十周 | 80/2049 | 1/10 | 10/112 | 输入输出流和各种流的作用、构造方法 |
第十一周 | 92/2141 | 1/11 | 7/119 | 连接数据库步骤、查询、更新、添加、删除语句 |
第十二周 | 104/2245 | 1/12 | 15/134 | 多线程的运行顺序和特点 |
第十三周 | 150/2395 | 1/13 | 12/146 | 线程、套接字、数据报、组件面板等的结合应用 |
第十四周 | 50/2445 | 1/14 | 5/151 | 绘制图像,图像,播放音频 |
第十四周 | 91/2536 | 1/15 | 6/157 | 泛型类(链表、堆栈、树)的声明和定义 |
参考文献
《java2实用教程(第5版)》