在这里记录一下,以防代码丢失
感谢黑马
题目一
**需求**
* 某小型商城系统的订单信息在**素材下的orders.xml文件中**,现在要求把xml中的订单信息,封装成一个一个的订单对象,将订单对象保存到ArrayList集合中。
**具体功能点要求**
1) 定义订单类Order,创 建ArrayList集合,用于存储订单Order对象 (解析XML 4分,封装成对象2分)
2)请使用Stream流找出今天之前的订单,并遍历输出。(3分)
3) 请使用Stream流找出集合中价格最贵的订流单,把这个订单的详细信息打印出来。(3分)
4) 请使用Stream流遍历集合中的每个订单,要求按照价格降序输出每个订单的详情。(3分)
- Order类
package com.study.answer1;
import java.time.LocalDateTime;
public class Order {
private int id;
private String name;
private LocalDateTime time;
private double price;
public Order() {
super();
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public LocalDateTime getTime() {
return time;
}
public void setTime(LocalDateTime time) {
this.time = time;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public String toString() {
return "[id=" + id + " name=" + name + " time=" + time + " price=" + price + "]\n";
}
}
- Test类
package com.study.answer2;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.stream.Collectors;
//张全蛋儿 农家乐,野外拓展
//李二狗子 轰趴,野外拓展,健身房
//翠花 野外拓展,
//小帅 轰趴,健身房
//有容 农家乐
/**
1、请找出每个去处想去的人数是多少,并输出投票最多的去处是哪个。
2、请找出哪些人没有选择投票最多的去处,输出他们的名字
*/
public class Test {
public static void main(String[] args) {
//1.把数据装进Map或对象中
Map<String,List<String>> selects=new HashMap<>();
List<String> data1=new ArrayList<>();
Collections.addAll(data1, "农家乐","野外拓展","轰趴");
selects.put("张全蛋儿", data1);
List<String> data2=new ArrayList<>();
Collections.addAll(data2, "轰趴","野外拓展","健身房");
selects.put("李二狗子", data2);
List<String> data3=new ArrayList<>();
Collections.addAll(data3, "野外拓展","轰趴");
selects.put("翠花", data3);
List<String> data4=new ArrayList<>();
Collections.addAll(data4, "健身房");
selects.put("小帅", data4);
List<String> data5=new ArrayList<>();
Collections.addAll(data5, "农家乐");
selects.put("有容", data5);
System.out.println(selects);
//2.找出每个地点选择的人数和最多人选的地点
Map<String,Integer> count=new HashMap<>();
selects.forEach((name,datas)->{
for(String data:datas) {
count.put(data, count.containsKey(data)?count.get(data)+1:1);
}
});
System.out.println("每个地点去的人数:");
System.out.println(count);
System.out.println("最多人选的地点:");
Entry<String, Integer> entry = count.entrySet().stream().max((e1,e2)->e1.getValue()-e2.getValue()).get();
//为了多个最多都输出
List<String> addresMax = count.entrySet().stream().filter(e->e.getValue()==entry.getValue()).map(e->e.getKey()).collect(Collectors.toList());
System.out.println(addresMax);
//3.哪些人没去最多的地方
System.out.println("没去最多人选的地点的人:");
selects.entrySet().stream().filter(e->{
boolean flag=true;
// Outer:for(String addres:e.getValue()) {
// for(String addresMaxTarget:addresMax) {
// if(addres==addresMaxTarget) {
// flag=false;
// break Outer;
// }
// }
// }
//答案
for(String s:e.getValue()) {
if(addresMax.contains(s)) {
flag=false;
break;
}
}
return flag;
}).forEach(e->System.out.println(e.getKey()));
}
}
题目二
**需求**
* 某个班级组织团建活动,班长给出了几个去处给大家选择,分别是 “农家乐” , "轰趴",“野外拓展”,“健身房”,本次活动每个学生是可以多选的。
* 现在有如下5名学生选择了如下去处。
```
张全蛋儿 农家乐,野外拓展
李二狗子 轰趴,野外拓展,健身房
翠花 野外拓展,
小帅 轰趴,健身房
有容 农家乐
```
**具体的功能点如下:**
1、请找出每个去处想去的人数是多少,并输出投票最多的去处是哪个。
2、请找出哪些人没有选择投票最多的去处,输出他们的名字。(**本案例用不用stream流做都给分**)
**比如:小帅,有容没有选择野外拓展。**
本题写的时候更改了去处
- Test类
package com.study.answer2;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.stream.Collectors;
//张全蛋儿 农家乐,野外拓展
//李二狗子 轰趴,野外拓展,健身房
//翠花 野外拓展,
//小帅 轰趴,健身房
//有容 农家乐
/**
1、请找出每个去处想去的人数是多少,并输出投票最多的去处是哪个。
2、请找出哪些人没有选择投票最多的去处,输出他们的名字
*/
public class Test {
public static void main(String[] args) {
//1.把数据装进Map或对象中
Map<String,List<String>> selects=new HashMap<>();
List<String> data1=new ArrayList<>();
Collections.addAll(data1, "农家乐","野外拓展","轰趴");
selects.put("张全蛋儿", data1);
List<String> data2=new ArrayList<>();
Collections.addAll(data2, "轰趴","野外拓展","健身房");
selects.put("李二狗子", data2);
List<String> data3=new ArrayList<>();
Collections.addAll(data3, "野外拓展","轰趴");
selects.put("翠花", data3);
List<String> data4=new ArrayList<>();
Collections.addAll(data4, "健身房");
selects.put("小帅", data4);
List<String> data5=new ArrayList<>();
Collections.addAll(data5, "农家乐");
selects.put("有容", data5);
System.out.println(selects);
//2.找出每个地点选择的人数和最多人选的地点
Map<String,Integer> count=new HashMap<>();
selects.forEach((name,datas)->{
for(String data:datas) {
count.put(data, count.containsKey(data)?count.get(data)+1:1);
}
});
System.out.println("每个地点去的人数:");
System.out.println(count);
System.out.println("最多人选的地点:");
Entry<String, Integer> entry = count.entrySet().stream().max((e1,e2)->e1.getValue()-e2.getValue()).get();
//为了多个最多都输出
List<String> addresMax = count.entrySet().stream().filter(e->e.getValue()==entry.getValue()).map(e->e.getKey()).collect(Collectors.toList());
System.out.println(addresMax);
//3.哪些人没去最多的地方
System.out.println("没去最多人选的地点的人:");
selects.entrySet().stream().filter(e->{
boolean flag=true;
// Outer:for(String addres:e.getValue()) {
// for(String addresMaxTarget:addresMax) {
// if(addres==addresMaxTarget) {
// flag=false;
// break Outer;
// }
// }
// }
//答案
for(String s:e.getValue()) {
if(addresMax.contains(s)) {
flag=false;
break;
}
}
return flag;
}).forEach(e->System.out.println(e.getKey()));
}
}
题目三
**需求**
* 黑马程序员教学管理系统的菜单信息如下(图1所示),菜单的详细数据存储在**给的素材文件“系统菜单.txt”中**。
**具体要实现的功能点如下所示**
1、请从**系统菜单.txt**中读取这些菜单信息,将这些菜单信息在控制台展示成图1的样子(必须确保展示的顺序是正确的)
2、将正确的菜单顺序,写出到一个新文件**"系统菜单2.txt"**中保存起来,详细格式如下
**评分细则**
* 能把数据读取出来:3分
* 能展示成控制台的样子:8分
* 能写出去:4分。
- Test类
package com.study.answer3; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.PrintStream; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Test { // 1、请从"系统菜单.txt" 中读取这些菜单信息,将这些菜单信息在控制台展示成图1的样子(必须确保展示的顺序是正确的) // 2、将正确的菜单顺序,写出到一个新文件"系统菜单2.txt"中保存起来 public static void main(String[] args) { try ( //1.使用流读取文件中的全部数据。 BufferedReader br=new BufferedReader(new FileReader("D:\\code\\eclipse-workspace\\期末答题卡\\src\\系统菜单.txt")); //需要绝对路径,相对不行,不知道为什么 //用于打印新菜单的流 PrintStream ps=new PrintStream("D:\\code\\eclipse-workspace\\期末答题卡\\src\\系统菜单2.txt"); ){ //2.按照行读取菜单,存入集合 List<String> menus=new ArrayList<>(); String line; while((line=br.readLine())!=null) { menus.add(line); } //3.对菜单进行排序 Collections.sort(menus);//这里可以直接使用sort(),此外还可用stream流 //4.遍历集合 for(String menu:menus) { //不追求缩进 // System.out.println(menu); String[] numName=menu.split("-"); System.out.println(numName[0].length()==4?numName[1]:"\t"+numName[1]); } //5.写菜单到新文件 for(String menu:menus) { ps.println(menu); } } catch (Exception e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } }