-
User 实体类,包含如下属性
- private Long id; // 用户id 名
- private String name; //用户姓名
- private String gender; //性别
- private LocalDate birthday; //生日
- 注意需要提供 set和get方法,以及toString方法
-
新建测试类,类中 main 方法,在方法中完成如下业务逻辑:
-
业务一:
- 有如下字符串,里面包含多个用户信息数据,现在需要你解析这个字符串,获取里面的用户数据,并封装到User对象中
- 多个User对象在添加到List 集合中
String userStrs = "10001:张三:男:1990-01-01#10002:李四:女:1989-01-09#10003:王五:男:1999-09-09#10004: 刘备:男:1899-01-01#10005:孙悟空:男:1900-01-01#10006:张三:女:1999-01-01#10007:刘备:女:1999-01-01#10008: 张三:女:2003-07-01#10009:猪八戒:男:1900-01-01";
- 注意:
- 字符串中的规则如下,多个用户用 # 拼接,用户的信息之间用 : 拼接。
- 其中用户id和生日是需要进行类型转换的,其中id需要将String转成Long,生日需要将String转成LocalDate
-
业务二:
- 遍历上面获取的List 集合,统计里面每个名字出现的次数。
- 封装到Map<String,Integer>集合中,集合的key就是名字,value就是名字出现的次数。
- 最后遍历打印map数据,打印内容如下:
- 张三:3次
- 李四:5次
-
public class Test {
public static void main(String[] args) {
//1、将数据拿进来
String userStrs = "10001:张三:男:1990-01-01#10002:李四:女:1989-01-09#10003:王五:男:1999-09-09#10004:" +
"刘备:男:1899-01-01#10005:孙悟空:男:1900-01-01#10006:张三:女:1999-01-01#10007:刘备:女:1999-01-01#10008:" +
"张三:女:2003-07-01#10009:猪八戒:男:1900-01-01";
//2、将数据进行分割,得到分割后的数据
String[] userData = userStrs.split("#");
System.out.println(Arrays.toString(userData));
//6、创建一个对象集合用于存储对象
List<User> users = new ArrayList<>();
//3、遍历数组中的内容得到每一条对象信息
for (String userDatum : userData) {
//4、对每一条信息再进行分割,得到每个用户的信息数组
String[] strings = userDatum.split(":");
//5、创建用户对象,将用户信息数组中的内容存储进对象中
User user = new User();
user.setId(Long.valueOf(strings[0]));
user.setName(strings[1]);
user.setGender(strings[2]);
user.setBirthday(LocalDate.parse(strings[3]));
//7、将用户加入到用户集合中去
users.add(user);
}
System.out.println(users);
//9、创建一个map集合,用于统计用户名字和其出现的次数
Map<String,Integer> result = new HashMap<>();
//8、遍历用户集合,统计集合中姓名出现的次数
for (User user : users) {
String name = user.getName();
if(result.containsKey(name)){
//如果集合中有这个名字,就值加1
result.put(name,result.get(name)+1);
}else{
//如果集合里没有这个名字就将其加进去
result.put(name,1);
}
}
result.forEach((k,v) ->{
System.out.println(k + ": " + v);
});
}
}
本题考验的都是一些基础的内容!