20175310 《Java程序设计》第8周学习总结
本周博客:
https://www.cnblogs.com/xicyannn/p/10722004.html
教材学习内容总结
这周学习了第十五章的内容,主要的知识点如下:
泛型:
- 泛型类声明:可以使用
class 名称<泛型列表>
声明一个类,例如:class People<E>
- 这里是列表文本类名后多了对
<>
,而且必须要用具体的类型替换<>
中的泛型。 - 声明对象:
Cone<Circle> coneOne;
coneOne = new Cone<Circle>(new Circle());
链表:
-
LinkedList
链表:创建对象以链表结构存储数据 - 创建空链表:
LinkedList mylist = new LinkedList();
- 使用
add(E obj)
方法依次增加节点 - 使用
get(int index)
方法遍历链表
排序与查找 :
-
Collections
类提供的用于排序和查找的类方法如下:
-
public static sort(List<E> list)
该方法可以将list
中的元素升序排列。 -
int binarySearch(List<T> list, T key,CompareTo<T> c)
使用折半法查找list
是否含有和参数key
相等的元素,如果key
链表中某个元素相等,方法返回和key
相等的元素在链表中的索引位置(链表的索引位置从0考试),否则返回-1。
- 升序排序:
public static sort(List list)
- 折半法查找:
int binarySearch(List list,T key,CompareTo c)
洗牌与旋转 :
- 随机排序:
public static void shuffle(List list)
- 旋转数据:
static void rotate(List list,int distance)
- 翻转数据:
public static void reverse(List list)
堆栈 :
- 堆栈是一种“后进先出”的数据结构,只能在一端进行输入或输出数据的操作。
-
Stack<E>
泛型类创建一个堆栈对象,堆栈对象常用方法: -
public E push(E item);
实现压栈操作 -
public E pop();
实现弹栈操作。 -
public boolean empty();
判断堆栈是否还有数据。 -
public E peek();
获取堆栈顶端的数据,但不删除该数据。 -
public int search(Object data);
获取数据在堆栈中的位置。
散列映射:
HashMap<K,V>
泛型类创建的对象称作散列映射,例如:
HashMap<String,Student> hashtable = HashSet<String,Student>();
树集:
-
TreeSet
类创建的对象叫做树集。 - 在树集中,按字典顺序从左到右递增,从上到下递减。
树映射
-
TreeMap<K,V>
类实现了Map<K,V>
接口,称TreeMap<K,V>
对象为树映射。 - 树映射的结点存储关键字、关键值对。
教材学习中的问题和解决过程
问题1:
课本464页习题第一题的第四小问:对于经常需要查找的数据,应当选用LinkedList<E>
,还是选用HashMap<K,V>
来存储?问题1解决方案:
通过询问同学以及阅读课本,可以知道,使用HashMap<K,V>
,利用这个类创建散列映射,散列映射采用散列表结构存储结果,方便查找数据,可以减少检索的开销。
代码调试中的问题和解决过程
在做这周的实验二时,遇到了许多问题,主要的问题如下:
问题2:
在做第四个实验的时候,当复数的虚部为负时,表达式显示错误:问题2解决方案:
首先用()
把两个复数隔开,更加清晰
然后判断虚部的正负,当虚部为负时,将ImagePart*(-1)
作为一个整体输出。问题3:
测试代码时,提示不正确问题3解决方案:
可以看到提示说,希望得到的和实际得到的,看起来是一样的,但是编译不通过,所以应该是类型不同。
将计算结果最后加上“”
,将结果转换成字符串类型,就可以编译通过了。
代码托管
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 6/6 | 2/2 | 30/30 | |
第二周 | 625/631 | 3/5 | 35/65 | |
第三周 | 660/1291 | 2/7 | 38/103 | |
第四周 | 972/2263 | 2/9 | 30/133 | |
第五周 | 399/2662 | 3/12 | 32/165 | |
第六周 | 1342/4004 | 3/15 | 35/200 | |
第七周 | 1341/5345 | 2/17 | 35/235 | |
第八周 | 798/6143 | 2/19 | 35/270 |