20165320 第十周课上测试补做

相关知识点总结:

1.LinkedList泛型类创建一个链表对象

LinkedList<String> mylist = new LinkedList<String>();

2.向链表中依次添加结点

mylist.add();

3.链表的遍历

LinkedList类中的get(int index)方法将返回当前链表中第index个结点中的对象

链表对象可以使用iterator()方法获取一个Iterator对象,该对象是针对当前链表的迭代器。

4.排序与查找

public static sort(List<E>list)

该方法可将list中的元素按升序排列

int binarySearch(List<T>list,T key,CompareTo<T> c)

使用折半查找list是否含有和参数key相等的元素

还可以通过Comparable接口规定对象的大小比较
  1. 链表相关的概念

    单链表:每个结点含有一个数据和下一个结点的引用

    双链表:每个结点含有一个数据和下一个结点的引用以及上一个结点的引用

    Collections类可以通过调用sort方法来进行排序

课上内容补做截图:
一、

  • 在数据结构和算法中,排序是很重要的操作,要让一个类可以进行排序,有两种方法:
  • 有类的源代码,针对某一成员变量排序,让类实现Comparable接口,调用Collection.sort(List)
  • 没有类的源代码,或者多种排序,新建一个类,实现Comparator接口 调用Collection.sort(List, Compatator)

运行截图:
1296864-20180506223207968-745715500.png

二、补充MyList.java的内容,提交运行结果截图(全屏)

错因:一开始实用链表的Linked相关方法进行操作,之后才发现需要运用Node进行结点的相关操作

运行截图:
1296864-20180506220819337-551308195.png

书上代码分析:

15.1:声明一个泛型类Cone,计算体积的时候只关心它的底能否计算面积,和底的具体形状没有关系,所以求体积时用泛型做底,而且泛型变量只能调用从object类继承或重写的方法,例子中的底面积需要用tostring()方法。

15.2:该例子是为了比较get(int index)方法与iterator()方法遍历链表所需要的时间。因为LinkedList的存储结构不是顺序结构,所以链表调用get(int index)方法所要的时间长,所以需要用迭代器。

15.3:这个例子是使用老版本JDK的LinkedList,创建一个新链表,添加元素进行遍历,一个是使用get index,一个是使用迭代器。

15.4:例子4是通过Comparable接口规定的大小关系来进行对链表的排序,最后再用Collections类调用sort方法排序。该程序中在 compareTo方法里返回的是height的大小比较,所以链表中的对象是按照height的大小来决定对象之间的大小关系。

15.5:该例子就是使用了Collections类中的洗牌算法还有旋转算法对链表进行洗牌还有旋转,再分别将它们遍历输出看变化。

15.6:该例子是使用堆栈输出一个递归序列,算法是后一项等于前两项的和,也就是Fibonacci数列。 重要的操作就是

压栈和弹栈: 

push 压栈

pop 弹栈

15.7:该例子是一个英语单词查询的GUI程序,用户在界面的一个文本框中输入一个英文单词,另一个文本框显示单词的翻译

15.8:该例子首先是创建了一个树集,在树集里面增添了四个元素,而树集和链表不一样,添加的时候它就按照对象的大小进行添加的。

90 赵一

66 钱二

86 孙三

76 李四

15.9:该例子是使用TreeMap分别按学生的英语成绩和数学成绩排序结点,不仅存储了数据,还存储了与其相关联的关键字(即数学和英语)。

15.10:该例子实现了自动装箱与自动拆箱的功能。

程序允许把一个基本数据类型添加到类似链表等数据结构中,系统会自动完成基本类型到相应对象的转换,获取时系统自动完成对象到基本类型的转换。

书上编程题目:

1.使用堆栈结构输出an的若干项,其中an=2an-2,a1=3,a2=8。

解法:按照15.7的例题修改栈一开始的两个元素,再修改temp的计算方法就行
1296864-20180506220445665-98320558.png

2.编写一个程序,将链表中的学生英语成绩单存放到一个树集中,使得按成绩自动排序,并输出排序结果。

解法:按照15.8的例题,用两个迭代器,一个链表的,一个是树集的,分别将链表中的Student对象添加到树集中,再通过树集的迭代器挨个打印出来
1296864-20180506220454677-976274475.png

3.有10个U盘,有两个重要属性:价格和容量。编写一个应用程序,使用TreeMap<K,V>类,分别按照价格和容量排序输出10个U盘的详细信息。

解法:按照15.9的例题,将英语和数学修改成U盘的容量和价格就行了
1296864-20180506220501326-418448682.png

转载于:https://www.cnblogs.com/Gst-Paul/p/9000102.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值