集合的一个综合小例题
客户的消费记录如下: 姓名 消费金额 李四 8359 李四 1048 王五 3827 李四 2158 李四 553 王五 837 王五 2870 张三 9936
设计程序,找出消费次数最多的客户,并获取到其最高的消费金额
个人思路:先建立一个list来存放数据,因为list可以存储重复数据,然后再将use中的name提取到map里面,键值为名字,内容为个数,这样就可以统计消费的个数了,然后再用if语句来筛选出最大消费者,再用最大消费者的名字返回到List里面提取最大的金额
package com.ujiuye.HomeWork; public class use { // 定义一个客户类,存在姓名和金额属性 private String name; private double money; public use() { super(); // TODO Auto-generated constructor stub } public use(String name, double money) { super(); this.name = name; this.money = money; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getMoney() { return money; } public void setMoney(double money) { this.money = money; } }
package com.ujiuye.HomeWork; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class HomeWork04 { public static void main(String[] args) { // 创建一个list数组 List<use> list = new ArrayList<>(); //定义一个最大消费者的姓名 String maxname = null ; //定义一个最大消费者的额度 double maxmoney = 0; //添加数据 list.add(new use("李四",8359)); list.add(new use("李四",1048)); list.add(new use("王五",3827)); list.add(new use("李四",2158)); list.add(new use("李四",553)); list.add(new use("王五",837)); list.add(new use("王五",2871)); list.add(new use("张三",9936)); //将map里存放消费次数统计 Map<String, Integer> map = new HashMap<>(); for (use use : list) { //三则运算来判断消费次数 map.put(use.getName(), map.get(use.getName()) != null? (map.get(use.getName())+1):1); } //System.out.println(map); //定义entry类型来判断最大消费者 Set<Map.Entry<String, Integer>> set = map.entrySet(); int max = 0; for (Entry<String, Integer> entry : set) { if(max <= entry.getValue()) { max = entry.getValue(); System.out.println("最大消费者是"+entry.getKey()+"一共消费了"+max+"次"); maxname = entry.getKey(); } } //增强for进行最大消费者的金额统计 for (use u : list) { if(maxname.equals(u.getName())){ //maxmoney += u.getMoney(); if(u.getMoney() >= maxmoney) { maxmoney = u.getMoney(); } } } System.out.println("消费金额为"+maxmoney); } }
上一篇:
IDEA上Java项目控制台中文乱码