20165201 课下作业第十周(选做)
一、相关知识点总结
- 泛型
可以使用class 名称<泛型列表>
声明一个类,<>里面可以是类和接口,但不能是基本数据类型!泛型声明的类称作泛型类
且使用泛型时,不需要进行强制类型转换
- 链表
我们在处理或储存相同类型的数据时,如果用数组的话,必须先定义它的大小,并且不能随意改变大小,这不利于数据的储存,占用了很多不必要的内存资源;然而链表却恰恰弥补了这一点,它能够动态的分配存储空间。
链表是由若干个称作节点的对象组成的一种数据结构,每个节点含有一个数据和下一个节点的引用
使用LinkedList
来创建链表对象,链表对象可以使用iterator()
方法获取一个Iterator对象,该对象就是针对当前链表的迭代器,可以对链表进行遍历
public static sort(List<E> list)
能够把list中的元素升序排列;而int binarySearch(List<T> list, T key,CompareTo<T> c)
利用折半法查找list中是否含有与key相等的元素,如果某个元素相等,能返回和key相等的元素在链表中的索引位置,否则返回-1
- 堆栈
堆栈是“后进先出”的数据结构,即只能在它的一端进行输入或输出的操作
- 散列映射
HashMap泛型类创建的对象
- 树集
TreeSet类创建的对象叫做树集,在树集中,按字典的顺序从左到右依次递增,从上到下依次递减
- 树映射
TreeMap对象为树映射,树映射的节点可以存储关键字、关键值对。排序时会按照储存的关键字升序排列
二、课上内容补做代码和运行结果截图
- 题目要求:
补充MyList.java的内容,提交运行结果截图(全屏)
课下推送代码到码云
public class MyList {
public static void main(String [] args) {
//选用合适的构造方法,用你学号前后各两名同学的学号创建四个结点
//把上面四个节点连成一个没有头结点的单链表
//遍历单链表,打印每个结点的
//把你自己插入到合适的位置(学号升序)
//遍历单链表,打印每个结点的
//从链表中删除自己
//遍历单链表,打印每个结点的
}
}
public class Node<T> //单链表结点类,T指定结点的元素类型
{
public T data; //数据域,存储数据元素
public Node<T> next; //地址域,引用后继结点
public Node(T data, Node<T> next) //构造结点,data指定数据元素,next指定后继结点
{
this.data = data; //T对象引用赋值
this.next = next; //Node<T>对象引用赋值
}
public Node()
{
this(null, null);
}
public String toString() //返回结点数据域的描述字符串
{
return this.data.toString();
}
}
import java.util.*;
class Student implements Comparable {
int id;
String name;
Student(int i, String n) {
id = i;
name = n;
}
public int compareTo(Object b) {
Student stu = (Student) b;
return (this.id - stu.id);
}
}
public class MyList {
public static void main(String[] args) {
//选用合适的构造方法,用你学号前后各两名同学的学号创建四个结点
LinkedList<Student> list = new LinkedList<>();
list.add(new Student(20165238, "步繁"));
list.add(new Student(20165239, "其米仁增"));
list.add(new Student(20165202, "贾海粟"));
list.add(new Student(20165203, "夏云霄"));
//把上面四个节点连成一个没有头结点的单链表
Iterator<Student> iter = list.iterator();
//遍历单链表,打印每个结点的
System.out.println("打印初始的单链表:");
while (iter.hasNext()) {
Student stu = iter.next();
System.out.println(stu.id + " " + stu.name);
}
//把你自己插入到合适的位置(学号升序)
list.add(new Student(20165201, "李梓豪"));
Collections.sort(list);
//遍历单链表,打印每个结点的
iter = list.iterator();
System.out.println("打印插入自己的学号和姓名并排序后的单链表:");
while (iter.hasNext()) {
Student stu = iter.next();
System.out.println(stu.id + " " + stu.name);
}
//从链表中删除自己
list.remove(0);
iter = list.iterator();
//遍历单链表,打印每个结点的
System.out.println("打印删除自己的学号和姓名并排序后的单链表:");
while (iter.hasNext()) {
Student stu = iter.next();
System.out.println(stu.id + " " + stu.name);
}
}
}
- 运行结果截图