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";

要求:

  1. 将数据封装至 Hero 对象, 多个 Hero 对象放入 List 集合
  2. 将集合中的数据按寿命高低排序(即death-birth), 找到寿命最高的武将
  3. 按集合中数据按武力值排序, 找到武力最高的武将
  4. 找到男性武力最低的武将
  5. 找到女性武力最高的武将
  6. 找到武力最高的前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习题 - 三国武将基础信息处理相关推荐

  1. 三国武将10大巅峰时刻

    三国武将10大巅峰时刻 NO.10文鸯单骑退雄兵. "背后数百员魏将,抖擞精神,骤马追来:将至乐嘉桥边,看看赶上.鸯忽然勒回马大喝一声,直冲入魏将阵中来:钢鞭起处,纷纷落马,各各倒退.鸯复缓 ...

  2. 微型计算机硬件中访问速度最快的,习题一计算机基础知识.doc.doc

    习题一计算机基础知识.doc.doc 习题一 计算机基础知识 选择题 1.微型计算机系统包括 . A.主机和外设 B. 硬件系统和软件系统 C. 主机和各种应用软件 D. 运算器.控制器和存储器 2. ...

  3. 《BI那点儿事》Microsoft 决策树算法——找出三国武将特性分布,献给广大的三国爱好者们...

    <BI那点儿事>Microsoft 决策树算法--找出三国武将特性分布,献给广大的三国爱好者们 原文:<BI那点儿事>Microsoft 决策树算法--找出三国武将特性分布,献 ...

  4. 做了一个app,返回三国武将的排序网页,记录一下,省得以后找不到

    这个app可以说是自己弄着玩的. 效果这样: 随机返回800多个三国武将里面的5个,然后按照这5个的武力值排序,渲染到list页面.挺好玩的. 使用nodejs和mogoose app如下: app. ...

  5. C++~STL容器实例——三国武将阵营管理系统

    目录 1.要求 2.源代码01 2.所需知识点 3.源代码02 1.要求 题目要求: 现有12名三国武将,将被随机分为3个阵营, 武将信息有: 姓名 战力值:阵营分为:魏.蜀.吴 随机给12名武将分配 ...

  6. 猛将赵云java,三国武将实力排行,赵云仅排第五,而他确实是三国第一公认猛将...

    原标题:三国武将实力排行,赵云仅排第五,而他确实是三国第一公认猛将 相信大家都看过,里面的著名武将真的是非常多, 为我们所熟知的应该就是五虎上将.五子良将这些了,但是大家真的知道他们之间到底谁最强吗? ...

  7. nba球员与三国武将

    近日无事在家,连观火箭小牛七番大战,天混地暗,鬼哭神号.今日又遇小厮爆走,大杀四方.只听一人不停大呼"小霸王"不止,定神一看,大呼之人乃c5大将 孙老师.心中暗叫此绰号起的好,小厮 ...

  8. 三国武将与隋唐武将武艺对比

    三国武将与隋唐武将武艺对比 三国武将与隋唐武将武艺对比 1冲阵 以三国中子龙为例 赵云一骑马飞入绍军,左冲右突,如入无人之境.公孙瓒引军杀回,绍大败,迤逦赶过桥去.绍军东西乱窜,云在前,瓒在后,迤逦杀 ...

  9. Python map 函数 - Python零基础入门教程

    目录 一.前言 二.Python map 函数语法简介 三.Python map 函数实战 1.使用 map 函数 2.map 函数配合 lambda 匿名函数一起使用 四.Python map 函数 ...

最新文章

  1. 目标检测(Object Detection)原理与实现
  2. 使用FCN做图像语义分割(实践篇)
  3. Introduction to algrithms exercise2.3-7
  4. 【NLP新闻-2013.06.16】Representative Reviewing
  5. PHP第一天 ① 重置端口命令 netsh winsock reset
  6. 理解手机中的感应器模块:重力感应/光线感应/电子罗盘/陀螺仪模块功能
  7. 在北京工作5年的程序员,通过人才引进入职县城事业编,月薪曝光
  8. 阿里云天池机器学习训练营(Day7, Day8):机器学习算法(三):K近邻(k-nearest neighbors)初探
  9. 腾讯T1~T9级别工程师具备专业的能力及知识点总结。
  10. pycharm中的红色小闪电
  11. 如何更改计算机名称及查看自己计算机的型号
  12. CAJ未授权用户在此计算机,笔记本提示未授予用户在此计算机上的请求登陆类型怎么办...
  13. Android获取设备的SerialNumber(SN)串号以及WIFIMac值
  14. oracle之trunc函数
  15. 【STM32+cubemx】0021 HAL库开发:EN28J60芯片移植uIP以太网协议栈
  16. L1-6 福到了 (模拟)
  17. QMS系统客户端自动化测试流程图
  18. Navicat Premium12 安装教程
  19. 1、列表推导式、字典推导式
  20. stm32f103c8t6通过max31865-pt100测温,软件spi通信串口1输出

热门文章

  1. 【转】larbin的设计原理
  2. java获取次月1日,java处置年、月、周次以及起至日期大全 (转载)
  3. 计算机控制直流电机闭环调速实验报告,电气工程及其自动化电力系统实训报告-基于PLC的直流电机调速实验.pdf...
  4. 差分隐私 机器学习_微软发布多个建置可信AI的问责机器学习工具
  5. java mail 不用密码_Java之道|Windows MySQL5.7忘记了密码,不要慌,不用重装!!!...
  6. 大学生计算机考试题题库,大学生统考计算机一级考试试题题库(供参考)
  7. ddt-TypeError: test_add_department_1() missing 3 required positional arguments
  8. java 图形化技术 哪个好_纳滤和反渗透技术哪个好?
  9. http接口_基于Python的HTTP接口自动化测试框架实现
  10. php fpm 平滑重启,nginx、php-fpm平滑重启和重载配置