201521123030 《Java程序设计》第8周学习总结

1. 本周学习总结

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

1.2 选做:收集你认为有用的代码片段

2. 书面作业

本次作业题集集合

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

1.1 实验总结

本题的关键在于元素的删除方式,如果从头开始删除,删除一个后会使后面元素的下标-1,造成部分元素删除不净,所以要从后面往前删,可以避免这种问题

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

2.1 伪代码(简单写出大体步骤)

1.建立map<String,Integer.

2.if(key值存在)put(key,value)else put(key,value+1)

3.实现sort,将map →list,实现compare

4.输出前十key和value

2.2 实验总结

本题的关键在与实现sort,通过比较key和value值

3.倒排索引(题目5-4)

3.1 截图你的提交结果(出现学号)

3.2 伪代码(简单写出大体步骤)

(1)建立Map<String,ArrayList>

(2)创建listline来存放句子

(3)若是已出现在HashMap中,value.add(句子的行数),否则存放新单词和其句子的行数

(4)转化成list,用匿名内部类实现Comparator接口(单词的排序),再输出

(5)输入句子,空格隔开,split方法存放单词

(6)查找句子中单词出现的行数,存放在另一个HashMap1,key=Integer,value=Integer

(7)判断出现的行数的次数=单词数,输出,否则输出found 0 results

3.3 实验总结

对一句话的各个单词所对应的索引数组求并集的时候可以利用list的retainAll()方法

4.Stream与Lambda

编写一个Student类,属性为:

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

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

import java.util.ArrayList;
import java.util.Set;
enum Gender {  
  female, male
} 
class Student
{
private Long id;
private String name;
private int age;
private Gender gender;//枚举类型
private boolean joinsACM; //是否参加过ACM比赛


public Student(Long id, String name, int age, Gender gender, boolean joinsACM) {
    super();
    this.id = id;
    this.name = name;
    this.age = age;
    this.gender = gender;
    this.joinsACM = joinsACM;
}

@Override
public String toString() {
    return "Student [id=" + id + ", name=" + name + ", age=" + age + ", gender=" + gender + ", joinsACM=" + joinsACM
            + "]";
}

public Student choose()
{
    if(this.id>10L&&this.name.equals("zhang")&&this.age>20&&this.gender==Gender.female&&this.joinsACM)
    {
        Student e=new Student(this.id,this.name,this.age,this.gender,this.joinsACM);
        return e;
    }
    
    else
        return null;
    
}
}
public class Main {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    ArrayList<Student> list=new ArrayList<Student>();
    Student e1=new Student(23L,"zhang",22,Gender.female,true);
    Student e2=new Student(9L,"zhang",19,Gender.female,true);
    list.add(e1);
    list.add(e2);
    for (Student student : list) {
        System.out.println(student.choose());
    }
}

}

4.2 使用java8中的stream(), filter(), collect()编写功能同4.1的函数,并测试。

list2=list.stream().filter(a->10<a.getId()).collect(Collectors.toList());//id>10
list2=list2.stream().filter(a->"zhang".equals(a.getName())).collect(Collectors.toList());//name为zhang
list2=list2.stream().filter(a->20<a.getAge()).collect(Collectors.toList());//age>20
list2=list2.stream().filter(a->getGender(2).equals(a.getGender())).collect(Collectors.toList());//gender为女
list2=list2.stream().filter(a->a.isJoinsACM()==true).collect(Collectors.toList());//参加过ACM比赛

4.3 构建测试集合的时候,除了正常的Student对象,再往集合中添加一些null,然后重新改写4.2,使其不出现异常。

ArrayList arrayList2 = (ArrayList) arrayList.parallelStream()
.filter(student -> student != null && (student.getId() > 10L && student.getName().equals("zhang")
&& student.getAge() > 20 &&
student.getGender().equals(Gender.女)
&& student.isJoinsACM()))
.collect(Collectors.toList());

5.泛型类:GeneralStack(题目5-5)

5.1 截图你的提交结果(出现学号)

5.2 GeneralStack接口的代码

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

5.3 结合本题,说明泛型有什么好处

编写一次能够使多种方法使用,避免重复编写的麻烦
泛型方法
基础参考文件GenericMain,在此文件上进行修改。
6.1 编写方法max,该方法可以返回List中所有元素的最大值。List中的元素必须实现Comparable接口。编写的max方法需使得String max = max(strList)可以运行成功,其中strList为List类型。也能使得Integer maxInt = max(intList);运行成功,其中intList为List类型。
public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll) {
return Collections.max(coll);
}

//test
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("aaa");
arrayList.add("abc");
arrayList.add("bbb");
System.out.println(max(arrayList));
3. 码云上代码提交记录及PTA实验总结

题目集:jmu-Java-05-集合

3.1. 码云代码提交记录


在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

posted @ 2017-04-15 19:36  周汉麟  阅读(162)  评论(1编辑  收藏  举报