201621123086 《Java程序设计》第9周学习总结

1. 本周学习总结

1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。

  • 泛型的主要目的之一就是用来指定容器要持有什么类型的对象,而且由编译器来保证类型的正确性。
  • 元组 (tuple) ,它是将一组对象直接打包存储于其中的一个单一对象。
  • 泛型也可以应用于方法,与其所在的类是否是泛型没有关系。该方法能够独立于类而产生变化。
  • 泛型还可以应用于内部类以及匿名内部类。
  • Java泛型是使用擦除来实现的,这意味着在使用泛型时,任何具体的类型信息都被擦除了。我们可以用extends来声明具有某个具体类型,随后便可以安全的在泛型类的方法中调用某个类型参数特有的方法。
  • 根据上面的特性可知,我们只在需要代码能够跨多个类型工作时才需要使用泛型。
  • 擦除的弊端在于此类中的转型、instancof操作、new表达式都是无效的。

2. 书面作业

1. List中指定元素的删除(题集题目)

1.1 实验总结。并回答:列举至少2种在List中删除元素的方法。

  • 我们可以通过将文本放入Scanner并调用next()方法来分离字符串
  • 使用List.remove()方法来删除元素,while(list.contains(str))来判断删除是否完全
  • 使用iterator.next()来遍历,str.equals(str)判断元素,用iterator.remove()来删除元素

2. 统计文字中的单词数量并按出现次数排序(题集题目)

2.1 伪代码(不得复制代码,否则扣分)

while()
	if(当字符串为!!!!!!)
		停止循环
	if(字符串在map中不存在)
		将字符串存入并设置其value为1
	if(存在)
		将其value+1并存入
调用Collections.sort并编写内部类
	value不相同
		返回value差值
	如果value相同
		返回key值差值
foreach	
	输出

2.2 实验总结

  • 此题排序的要点在于新建一个List并将map中的每个entry放入此List并进行排序,而非对原map进行操作。完成此题时,我在排完序后输出的是原map,导致了错误。在经过老师指正后理解了排序的实现方法。

3. 倒排索引(题集题目)

3.1 截图你的代码运行结果

3.2 伪代码(不得复制代码,否则扣分)

while(hasnextline)
	if(=="!!!!!")
		停止循环
	将str转换为word[]
	foreach:word
		如果包含word
			add行数
		不包含
			新建行数set
			添加word与set
foreach
	输出
while(hasnextline)
	string转换为keyword[]
	foreach:keyword
		if(!contain)
			flag = false;
		retainAll保留公共元素
	if(集合为空)
		flag = false;
	else
		输出集合
		foreach
			输出对应行

3.3 实验总结

  • 在创建map时,通过将value设为集合来表示行数。
  • 在查询时,通过新建一个集合并运用retainAll方法获得这keyword对应集合的公共元素。
  • 输出结果与输出样例相同,但PTA为答案错误。暂未排查出原因。

4.Stream与Lambda

编写一个Student类,属性为:

private Long id;
private String name;
private int age;
private Gender gender;//枚举类型
private boolean joinsACM; //是否参加过ACM比赛

创建一集合对象,如List,内有若干Student对象用于后面的测试。

4.1 使用传统方法编写一个搜索方法

4.2 使用java8中的stream(), filter(), collect()编写功能同4.1的代码,并测试(要出现测试数据)。


5. 泛型类:GeneralStack

5.1 GeneralStack接口的代码

interface GeneralStack<T>{
	public T push(T item); 
	public T pop();                    
	public T peek();                   
	public boolean empty();               
	public int size();                            
}

5.2 结合本题与以前作业中的ArrayListIntegerStack相比,说明泛型有什么好处

泛型的好处在于能使代码跨类型使用,减少局限性,提升复用性。我们只需要对于类型进行声明,便可以灵活的对其进行操作。


3.码云及PTA

3.1. 码云代码提交记录

3.2 截图PTA题集完成情况图


3.3 统计本周完成的代码量

周次 总代码量 新增代码量 总文件数 新增文件数
1 0 0 0 0
2 0 0 0 0
3 619 619 15 15
4 619 0 15 0
5 973 354 25 10
6 1394 421 37 12
7 2001 607 43 6
8 4046 2045 54 11
9 4486 440 64 10
10 4808 322 67 3

目标为3000行。

4. 评估自己对Java的理解程度

维度 程度
语法 PTA题目不难,但会因为一些细节问题卡住
面向对象设计能力 不算熟悉,了解较为浅显
应用能力 可以试一试简单的小程序
至今为止代码行数 4808
posted @ 2017-11-18 17:46  pirrat  阅读(217)  评论(0编辑  收藏  举报