Map习题 - 三国武将基础信息处理
Map习题
题目说明
// 数据说明
/*第一列: 编号 id第二列: 姓名 name第三列: 所属地 location第四列: 性别 sex第五列: 出生年 birth第六列: 去世年 death第七列: 武力值 strength
*/
String data = "1\t阿会喃\t云南\t男\t190\t225\t74\n" +"2\t伊籍\t江陵\t男\t162\t226\t24\n" +"3\t尹赏\t天水\t男\t194\t260\t44\n" +"4\t尹默\t梓潼\t男\t183\t239\t15\n" +"5\t于禁\t陈留\t男\t159\t221\t78\n" +"6\t卫瓘\t晋阳\t男\t220\t291\t46\n" +"7\t袁胤\t汝南\t男\t163\t199\t14\n" +"8\t袁熙\t汝南\t男\t176\t207\t51\n" +"9\t阎行\t长安\t男\t159\t222\t84\n" +"10\t阎柔\t北平\t男\t168\t227\t57\n" +"11\t袁术\t宛\t男\t155\t199\t65\n" +...+"830\t刘氏\t洛阳\t女\t164\t205\t8\n";
要求:
- 将数据封装至 Hero 对象, 多个 Hero 对象放入 List 集合
- 将集合中的数据按寿命高低排序(即death-birth), 找到寿命最高的武将
- 按集合中数据按武力值排序, 找到武力最高的武将
- 找到男性武力最低的武将
- 找到女性武力最高的武将
- 找到武力最高的前10名武将
可以使用传统集合求解,也可以使用 stream api 求解
题解
MainApp.java
import map.ex.Role;
import java.util.*;
public class MianApp {public static void main(String[] args) {String data = "1\t阿会喃\t云南\t男\t190\t225\t74\n" +"2\t伊籍\t江陵\t男\t162\t226\t24\n" +"3\t尹赏\t天水\t男\t194\t260\t44\n" +"4\t尹默\t梓潼\t男\t183\t239\t15\n" +"5\t于禁\t陈留\t男\t159\t221\t78\n" +"6\t卫瓘\t晋阳\t男\t220\t291\t46\n" +..."828\t卞氏\t许昌\t女\t160\t230\t24\n" +"829\t步练师\t\t女\t185\t238\t10\n" +"830\t刘氏\t洛阳\t女\t164\t205\t8\n";List<Role> rolesObject = setRolesObjects(data);Role deathBirth = findDeathBirth(rolesObject);System.out.println("寿命最高的武将为:" + deathBirth.getName() + " 寿命为:" + (Integer.parseInt(deathBirth.getDeath()) - Integer.parseInt(deathBirth.getBirth())) );Role strenght = findstrenght(rolesObject);System.out.println("武力值最高的武将为:" + strenght.getName() + " 武力值为:" + Integer.parseInt(strenght.getStrength()) );System.out.println("武力值最高的男武将信息为:");findManOrWomanStrenght(rolesObject, "男");System.out.println("武力值最高的女武将信息为:");findManOrWomanStrenght(rolesObject, "女");findFirstStrenghtNum(rolesObject, 10);}// 1. 将数据封装至 Hero 对象, 多个 Hero 对象放入 List 集合public static List<Role> setRolesObjects(String rolesString){List<String> role = Arrays.asList(rolesString.split("\n")); // 数据拆分为各个角色信息List<List<String>> roles= new ArrayList<>(); // 存入list<list>, 内为角色信息表for (String s : role) {roles.add(Arrays.asList(s.split("\t")));}List<Role> rolesObject = new ArrayList<>();for (List<String> rol : roles) {rolesObject.add(new Role(rol.get(0), rol.get(1), rol.get(2), rol.get(3), rol.get(4), rol.get(5), rol.get(6)));}return rolesObject;}// 2.将集合中的数据按寿命高低排序(即death-birth), 找到寿命最高的武将public static Role findDeathBirth(List<Role> rolesObject){Map<String, Integer> map = new HashMap<>();for (Role role : rolesObject) {map.put(role.getId(), Integer.parseInt(role.getDeath()) - Integer.parseInt(role.getBirth()));}Map<String, Integer> treemap = new TreeMap<>(new MyCompar1(map));treemap.putAll(map);// treemap.keySet().stream().findFirst().get(); 获取treemap中最大寿命的Role对象,也就是第一个对象//Optional<String> first = treemap.keySet().stream().findFirst(); first.get()可以得到Optional中的值// 得到角色对象,并返回return rolesObject.get(Integer.parseInt(treemap.keySet().stream().findFirst().get()) - 1);}// 3. 按集合中数据按武力值排序, 找到武力最高的武将public static Role findstrenght(List<Role> rolesObject){Map<String, Integer> map = new HashMap<>();for (Role role : rolesObject) {map.put(role.getId(), Integer.parseInt(role.getStrength()));}Map<String, Integer> treemap = new TreeMap<>(new MyCompar1(map));treemap.putAll(map);// 得到角色对象,并返回return rolesObject.get(Integer.parseInt(treemap.keySet().stream().findFirst().get()) - 1);}//4. 找到男/女性武力最低的武将public static void findManOrWomanStrenght(List<Role> rolesObject, String sex){Map<String, Integer> map = new HashMap<>();for (Role role : rolesObject) {if (role.getSex().equals(sex))map.put(role.getId(), Integer.parseInt(role.getStrength()));}Map<String, Integer> treemap = new TreeMap<>(new MyCompar1(map));treemap.putAll(map);// 得到角色对象,并返回for (Role role : rolesObject) {if (role.getId().equals(treemap.keySet().stream().findFirst().get())){System.out.println(role);}}//System.out.println(treemap.keySet().stream().findFirst().get());//return rolesObject.get(Integer.parseInt(treemap.keySet().stream().findFirst().get()) - 1);}// 6. 找到武力最高的前名武将public static void findFirstStrenghtNum(List<Role> rolesObject, int num){Map<String, Integer> map = new HashMap<>();for (Role role : rolesObject) {map.put(role.getId(), Integer.parseInt(role.getStrength()));}Map<String, Integer> treemap = new TreeMap<>(new MyCompar1(map));treemap.putAll(map);System.out.println("武力值最高的前" + num + "人为:");int count = 0;for (Map.Entry<String, Integer> stringIntegerEntry : treemap.entrySet()) {if (count == num)break;System.out.println(rolesObject.get(Integer.parseInt(stringIntegerEntry.getKey()) -1));count++;}}/*** 比较器1 Value值比较* Value : Integer.parseInt(role.getDeath()) - Integer.parseInt(role.getBirth())*/static class MyCompar1 implements Comparator<String> {private Map<String, Integer> map;public MyCompar1(Map<String, Integer> map) {this.map = map;}@Overridepublic int compare(String key1, String key2) {if (map.get(key1).intValue() < map.get(key2).intValue()) {return 1;}if (map.get(key1).intValue() > map.get(key2).intValue()) {return -1;}return 0;}}
}
Role.java
public class Role {private String id;private String name;private String location;private String sex;private String birth;private String death;private String strength;public Role() {}public Role(String id, String name, String location, String sex, String birth, String death, String strength) {this.id = id;this.name = name;this.location = location;this.sex = sex;this.birth = birth;this.death = death;this.strength = strength;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getLocation() {return location;}public void setLocation(String location) {this.location = location;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getBirth() {return birth;}public void setBirth(String birth) {this.birth = birth;}public String getDeath() {return death;}public void setDeath(String death) {this.death = death;}public String getStrength() {return strength;}public void setStrength(String strength) {this.strength = strength;}@Overridepublic String toString() {return "Role{" +"id='" + id + '\'' +", name='" + name + '\'' +", location='" + location + '\'' +", sex='" + sex + '\'' +", birth='" + birth + '\'' +", death='" + death + '\'' +", strength='" + strength + '\'' +'}';}
}
Map习题 - 三国武将基础信息处理相关推荐
- 三国武将10大巅峰时刻
三国武将10大巅峰时刻 NO.10文鸯单骑退雄兵. "背后数百员魏将,抖擞精神,骤马追来:将至乐嘉桥边,看看赶上.鸯忽然勒回马大喝一声,直冲入魏将阵中来:钢鞭起处,纷纷落马,各各倒退.鸯复缓 ...
- 微型计算机硬件中访问速度最快的,习题一计算机基础知识.doc.doc
习题一计算机基础知识.doc.doc 习题一 计算机基础知识 选择题 1.微型计算机系统包括 . A.主机和外设 B. 硬件系统和软件系统 C. 主机和各种应用软件 D. 运算器.控制器和存储器 2. ...
- 《BI那点儿事》Microsoft 决策树算法——找出三国武将特性分布,献给广大的三国爱好者们...
<BI那点儿事>Microsoft 决策树算法--找出三国武将特性分布,献给广大的三国爱好者们 原文:<BI那点儿事>Microsoft 决策树算法--找出三国武将特性分布,献 ...
- 做了一个app,返回三国武将的排序网页,记录一下,省得以后找不到
这个app可以说是自己弄着玩的. 效果这样: 随机返回800多个三国武将里面的5个,然后按照这5个的武力值排序,渲染到list页面.挺好玩的. 使用nodejs和mogoose app如下: app. ...
- C++~STL容器实例——三国武将阵营管理系统
目录 1.要求 2.源代码01 2.所需知识点 3.源代码02 1.要求 题目要求: 现有12名三国武将,将被随机分为3个阵营, 武将信息有: 姓名 战力值:阵营分为:魏.蜀.吴 随机给12名武将分配 ...
- 猛将赵云java,三国武将实力排行,赵云仅排第五,而他确实是三国第一公认猛将...
原标题:三国武将实力排行,赵云仅排第五,而他确实是三国第一公认猛将 相信大家都看过,里面的著名武将真的是非常多, 为我们所熟知的应该就是五虎上将.五子良将这些了,但是大家真的知道他们之间到底谁最强吗? ...
- nba球员与三国武将
近日无事在家,连观火箭小牛七番大战,天混地暗,鬼哭神号.今日又遇小厮爆走,大杀四方.只听一人不停大呼"小霸王"不止,定神一看,大呼之人乃c5大将 孙老师.心中暗叫此绰号起的好,小厮 ...
- 三国武将与隋唐武将武艺对比
三国武将与隋唐武将武艺对比 三国武将与隋唐武将武艺对比 1冲阵 以三国中子龙为例 赵云一骑马飞入绍军,左冲右突,如入无人之境.公孙瓒引军杀回,绍大败,迤逦赶过桥去.绍军东西乱窜,云在前,瓒在后,迤逦杀 ...
- Python map 函数 - Python零基础入门教程
目录 一.前言 二.Python map 函数语法简介 三.Python map 函数实战 1.使用 map 函数 2.map 函数配合 lambda 匿名函数一起使用 四.Python map 函数 ...
最新文章
- 目标检测(Object Detection)原理与实现
- 使用FCN做图像语义分割(实践篇)
- Introduction to algrithms exercise2.3-7
- 【NLP新闻-2013.06.16】Representative Reviewing
- PHP第一天 ① 重置端口命令 netsh winsock reset
- 理解手机中的感应器模块:重力感应/光线感应/电子罗盘/陀螺仪模块功能
- 在北京工作5年的程序员,通过人才引进入职县城事业编,月薪曝光
- 阿里云天池机器学习训练营(Day7, Day8):机器学习算法(三):K近邻(k-nearest neighbors)初探
- 腾讯T1~T9级别工程师具备专业的能力及知识点总结。
- pycharm中的红色小闪电
- 如何更改计算机名称及查看自己计算机的型号
- CAJ未授权用户在此计算机,笔记本提示未授予用户在此计算机上的请求登陆类型怎么办...
- Android获取设备的SerialNumber(SN)串号以及WIFIMac值
- oracle之trunc函数
- 【STM32+cubemx】0021 HAL库开发:EN28J60芯片移植uIP以太网协议栈
- L1-6 福到了 (模拟)
- QMS系统客户端自动化测试流程图
- Navicat Premium12 安装教程
- 1、列表推导式、字典推导式
- stm32f103c8t6通过max31865-pt100测温,软件spi通信串口1输出
热门文章
- 【转】larbin的设计原理
- java获取次月1日,java处置年、月、周次以及起至日期大全 (转载)
- 计算机控制直流电机闭环调速实验报告,电气工程及其自动化电力系统实训报告-基于PLC的直流电机调速实验.pdf...
- 差分隐私 机器学习_微软发布多个建置可信AI的问责机器学习工具
- java mail 不用密码_Java之道|Windows MySQL5.7忘记了密码,不要慌,不用重装!!!...
- 大学生计算机考试题题库,大学生统考计算机一级考试试题题库(供参考)
- ddt-TypeError: test_add_department_1() missing 3 required positional arguments
- java 图形化技术 哪个好_纳滤和反渗透技术哪个好?
- http接口_基于Python的HTTP接口自动化测试框架实现
- php fpm 平滑重启,nginx、php-fpm平滑重启和重载配置