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

  1. 本周学习总结
    1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。
  2. 书面作业
    1.List中指定元素的删除

题集jmu-Java-05-集合之4-1

1.1 实验总结

Answer:
贴上函数代码块和解释:

//注释参考来自JDK6.0文档(老师提供的中文版)

/* covnertStringToList函数代码 */
private static List convertStringToList(String line) {
Scanner input = new Scanner(line);
//实例化list
List list = new ArrayList();
while (input.hasNext()) {
//向列表的尾部添加指定的元素
list.add(input.next());
}
return list;
}

/* remove函数代码 */
public static void remove(List<String> list, String str) {
    Iterator<String> iterator = list.iterator();
    while (iterator.hasNext()) {
    // next()返回迭代的下一个元素
        String word = iterator.next();
        if (word.equals(str)) {
    //iterator.remove()从迭代器指向的 collection 中移除迭代器返回的最后一个元素
            iterator.remove();
        }
    }
}

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

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

Answer:
if (行中有关键字)
在关键字集合中加入行号
for (每次搜索) {
if (表 == 0)
System.out.println("found 0 results");
else {
System.out.println(行);
2.2 实验总结

Answer:
本题主要使用TreeMap<String, Set> line = new TreeMap<String, Set>(); ,来完成查找功能,是用出现的关键字来确定行号,之后用行号出现的次数来确定输出,如果没查找到,输出found 0 results。
3.1 伪代码(简单写出大体步骤)

Answer:

//若干行英文,以!!!!!为结束,并且统计每个单词所在行数
while (input.hasNextLine()) {
String str = input.nextLine();
if (str.compareTo("!!!!!") == 0)
break;
word.add(str);
String word1[] = str.split(" ");
for (int i = 0; i < word1.length; i++) {
Set num = new TreeSet();
if (line.containsKey(word1[i])) {
num = line.get(word1[i]);
}
num.add(count);
line.put(word1[i], num);
}
count++;
m++;
}
//输入一行查询关键字,输出行集与行集内每一行的内容
while (input.hasNext()) {
/*
......
......*/
if (arr.size() == 0)
System.out.println("found 0 results");
else {
System.out.println(arr.toString());
int j;
for (int i = 0; i < arr.size(); i++) {
j = arr.get(i) - 1;
System.out.println("line " + arr.get(i) + ":"+word.get(j));
}

3.2 实验总结

Answer:
巩固了对TreeMap运用的熟练程度,学会了用split截取字符串来取得其中的关键字。

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

4.Stream与Lambda

编写一个Student类,属性为:
private Long id;
private String name;
private int age;
private Gender gender;//枚举类型
private boolean joinsACM; //是否参加过ACM比赛
4.1 使用传统方法编写一个方法,将id>10,name为zhang, age>20,gender为女,参加过ACM比赛的学生筛选出来,放入新的集合。在main中调用,然后输出结果。

Answer:

运行结果:

5.1 GeneralStack接口的代码

Answer:

interface GeneralStack
{
public Object push(Object item);
public Object pop();
public Object peek();
public boolean empty();
public int size();
}
5.2 结合本题,说明泛型有什么好处

Answer:
在学泛型之前,我只知道类和方法只能使用具体的类型。当需要多种类型的方法和类时,必须重写。以实验5来说,以前IntegerStack接口只能用于存放Integer类型的数据,但运用泛型的知识,写了通用的GeneralStack接口,对任何引用类型的数据都适用。

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

Answer:

6.1 6.1 编写方法max,该方法可以返回List中所有元素的最大值。List中的元素必须实现Comparable接口。编写的max方法需使得Stringmax=max(strList)可以运行成功,其中strList为List类型。也能使得Integer maxInt =max(intList);运行成功,其中intList为List类型。

Answer:
max方法如下:

public static <T extends Comparable> T max(List list) {
T max = list.get(0);
for (T word : list) {
if (word.compareTo(max) > 0) {
max = word;
}
}
return max;
}
运行结果如下:


6.2 :现有User类,其子类为StuUser,且均实现了Comparable接口。编写方法max1,基本功能同6.1,并使得max1(stuList);可以运行成功,其中stuList为List类型。

Answer:
方法max1和max方法的思想是相同的,只需稍作改变如下:

//实现Comparable接口
public static <StuUserComparator extends Comparable> StuUser max1(List stuList)
{
StuUser maxstu = stuList.get(0);
for (StuUser student : stuList) {
if ( student.compareTo( maxstu ) > 0 ){
maxstu = student;
}
}
return maxstu;
}
实现结果:
.

3.1. 码云代码提交记录

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

posted on 2017-04-15 20:39  我信了你的邪  阅读(117)  评论(0编辑  收藏  举报