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 截图你的代码运行结果

1122312-20171118174706484-1909494275.png

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 使用传统方法编写一个搜索方法

1122312-20171118192955999-617370513.png

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

1122312-20171118202219296-1391221451.png


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. 码云代码提交记录

1122312-20171118203824577-1427280758.png

3.2 截图PTA题集完成情况图

1122312-20171118203852015-175192994.png
1122312-20171118203938484-1695536400.png

3.3 统计本周完成的代码量

周次总代码量新增代码量总文件数新增文件数
10000
20000
36196191515
46190150
59733542510
613944213712
72001607436
8404620455411
944864406410
104808322673

目标为3000行。

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

维度程度
语法PTA题目不难,但会因为一些细节问题卡住
面向对象设计能力不算熟悉,了解较为浅显
应用能力可以试一试简单的小程序
至今为止代码行数4808

转载于:https://www.cnblogs.com/piraat/p/7857489.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值