1. 本周学习总结

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

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

List<Entry<String,Integer>> list = new ArrayList<Entry<String,Integer>>(map.entrySet());

Scanner in = new Scanner(line);

 

 

2. 书面作业

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

1.1 实验总结:

  • 返回的数组元素类型是Object,调用者可以自由地修改iterator返回的数组。
  • 用列表来实现排序。
  • 扫描器可以用做遍历使用。

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

2.统计文字中的单词数量并按出现次数排序

 

Scanner input=new Scanner(System.in);
Map<String,Integer>map=new HashMap<String ,Integer>();
String x;
while(true){
x=input.next();
if(x.equals("!!!!!"))break;

if(map.containsKey(x)) map.put(x, map.get(x)+1);
if(map.get(x)==null) map.put(x, 1);
}
System.out.println(map.size());
List<Entry<String,Integer>> list =new ArrayList<Entry<String,Integer>>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1,Map.Entry<String, Integer> o2) {
if (o1.getValue() != o2.getValue()) {
return o2.getValue() - o1.getValue();
}
else {
return o1.getKey().compareTo(o2.getKey());
}
}
});

for(int i=0;i<10;i++){
System.out.println(list.get(i));

2.2 实验总结

TreeSet类实现Set接口,不含重复对象.将map对象转变为list对象,用entrySet()同时取得map的键和值

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

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

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


int row = 1;
while (scan.hasNextLine()) {
String s = scan.nextLine();
if (s.equals("!!!!!")) {
break;
}
else {
Scanner scan1 = new Scanner(s);
map2.put(row, s);
while (scan1.hasNext()) {
String s1 = scan1.next();
if (map.get(s1) == null) {
TreeSet<Integer> set = new TreeSet<Integer>();
set.add(row);
map.put(s1, set);
}
else {
map.get(s1).add(row);
}
}
scan1.close();
}
row++;
}
for (Map.Entry<String, TreeSet<Integer>> a : map.entrySet()) {
System.out.println(a);
}

if (!map.containsKey(s)) {
System.out.println("found 0 results");
continue;
}
TreeSet<Integer> set1 = map.get(s);
while (scan1.hasNext()) {
String s1 = scan1.next();
set1.retainAll(map.get(s1));

3.3 实验总结

对于Map的运用还不熟练,这道题目还是在同学帮助下完成的。

Q4、Stream与Lambda

编写一个Student类,属性为:

private Long id;

private String name;

private int age;

private Gender gender;//枚举类型

private boolean joinsACM; //是否参加过ACM比赛

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

4.1 使用传统方法编写一个方法,将id>10,name为zhang, age>20, gender为女,参加过ACM比赛的学生筛选出来,放入新的集合。在main中调用,然后输出结果。

ArrayList<Student> aList = new ArrayList<Student>();

for (Student student : arrayList) {

if (student.getId() > 10L && student.getName().equals("guo")

student.getAge() > 20

student.getGender().equals(Gender.女)

student.isJoinsACM())

aList.add(student);

}

}

return aList2、;

 

}

代码运行不出

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

ArrayList list1=(ArrayList) list.stream().filter(e->

(e.getId()>10L&&e.getAge()>20&&e.getGender().equals(gender1)&&e.isJoinsACM()==true)).collect(Collectors.toList());

list1.forEach(e->System.out.println(e));

结果:

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

泛型类:GeneralStack(题目5-5)
5.1 截图你的提交结果(出现学号)

 

 

5.2 GeneralStack接口的代码

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

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

泛型后不限制元素类型,无须再强制类型转化,减少程序出错的机会

3. 码云上代码提交记录及PTA实验总结

3.1. 码云代码提交记录

 

 

posted on 2017-04-15 20:17  郭余晟  阅读(208)  评论(0编辑  收藏  举报