首页 > 其他分享 >练习题07File、Map

练习题07File、Map

时间:2022-10-23 22:34:57浏览次数:49  
标签:练习题 Map hashMap list name 07File new public String

1、请使用Map集合存储自定义数据类型Car做键,对应的价格做值。并使用keySet和entrySet两种方式遍历Map集合。

package com.xxx;

public class Car {
    private String name;
    private int price;

    public Car() {
    }

    public Car(String name, int price) {
        this.name = name;
        this.price = price;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "Car{" +
                "name='" + name + '\'' +
                ", price=" + price +
                '}';
    }
}
package com.xxx;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Homework1 {
    public static void main(String[] args) {
        Car car = new Car("车", 100);
        Car car1 = new Car("车1", 200);
        Car car2 = new Car("车2", 300);

        HashMap<Car, Integer> hashMap = new HashMap<>();

        hashMap.put(car,car.getPrice());
        hashMap.put(car1,car1.getPrice());
        hashMap.put(car2,car2.getPrice());

//        TreeSet<Car> keySet = new TreeSet<>();
//        keySet.add(car);
//        keySet.add(car1);
//        keySet.add(car2);
//
//        for (int i = 0; i < keySet.size(); i++) {
//
//        }
        //获取所有键
        Set<Car> carSet = hashMap.keySet();
        for (Car c : carSet) {
            System.out.println(c + ":\t" + hashMap.get(c));
        }


        Iterator<Map.Entry<Car, Integer>> iterator = hashMap.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<Car, Integer> next = iterator.next();
            System.out.println(next);
        }
    }
}

2、需求:
统计一个文件夹中每种文件的个数并打印
打印格式如下:
txt:3个
doc:4个
jpg:6个

package com.xxx;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class Homework2 {
    public static void main(String[] args) throws IOException {
        //新建一些文件
        new File("d:\\a\\b\\1.txt").createNewFile();
        new File("d:\\a\\b\\2.doc").createNewFile();
        new File("d:\\a\\b\\3.jpg").createNewFile();
        new File("d:\\a\\b\\4.jpg").createNewFile();
        new File("d:\\a\\b\\5.md").createNewFile();

        //获取一个文件夹所有文件
        String path = "d:\\a\\b";
        File file = new File(path);

        //给所有的后缀,文件类型设置一个hashMap
        //String是文件后缀名,Integer是文件数量
        HashMap<String, Integer> map = new HashMap<>();


        //遍历文件路径名数组
        //返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
        for (File listFile : file.listFiles()) {
            String fileName = listFile.getName();
            if (fileName.contains(".")) {//如果文件名称包含"."
                //substring返回一个新的字符串,它是此字符串的一个子字符串。
                //lastIndexOf返回指定子字符串在此字符串中最右边出现处的索引。
                String fileSuffix = fileName.substring(fileName.lastIndexOf(".") + 1);
                if (!map.containsKey(fileSuffix)) {//如果文件后缀名第一次出现,给它次数设为1
                    map.put(fileSuffix,1);
                } else {
                    map.put(fileSuffix, map.get(fileSuffix) + 1);
                }
            }
        }
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }
    }
}

3、斗地主

package com.xxx;

import java.util.*;

public class Pai {
    /**
     * 斗地主
     * @param args
     */
    public static void main(String[] args) {
        //1.生成牌
        //数组->表示花色
        //数组->表示点数
        String[] colors = {"♦","♣","♥","♠"};
        String[] nums = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};

        //一个key对应一张牌,共54张
        HashMap<Integer, String> hashMap = new HashMap<>();

        //存放牌的索引的集合
        List<Integer> list = new ArrayList<>();

        //定义一个变量,记录牌的索引
        int index = 0;
        for (String num : nums) {
            for (String color : colors) {
                String pai = color + num;
                hashMap.put(index, pai);

                list.add(index);
                index++;
//                System.out.println(pai);//打印除大小王之外所有的牌
            }
        }
//        System.out.println(list);

        //大小王单独生成
        hashMap.put(53, "小王");
        list.add(53);
        hashMap.put(54, "大王");
        list.add(54);
//        System.out.println(list);

        //2.洗牌
        //把索引的顺序打乱
        Collections.shuffle(list);
//        System.out.println(list);
        //3.发牌
        //给3个人和底牌,每人发17张,底牌3张
        //set集合会排序,把牌整理好
        TreeSet<Integer> dushen = new TreeSet<>();
        TreeSet<Integer> duxia = new TreeSet<>();
        TreeSet<Integer> duwang = new TreeSet<>();
        TreeSet<Integer> dipai = new TreeSet<>();
        //依次发牌,就是依次发索引
        for (int i = 0; i < list.size(); i++) {//索引0~53,51,52,53发给底牌
            //先判断是否是底牌,不然底牌发不到
            if (i >= 51) {//最后三个索引发给底牌
                dipai.add(list.get(i));
            } else if (i % 3 == 0) {
                dushen.add(list.get(i));
            } else if (i % 3 == 1) {
                duxia.add(list.get(i));
            } else if (i % 3 == 2) {
                duwang.add(list.get(i));
            }
        }
        //打印3个人和底牌的牌的索引
//        System.out.println(dushen);
//        System.out.println(duxia);
//        System.out.println(duwang);
//        System.out.println(dipai);

        //4.调用看牌的方法
        lookPai("赌神", dushen, hashMap);
        lookPai("赌侠", duxia, hashMap);
        lookPai("赌王", duwang, hashMap);
        lookPai("底牌", dipai, hashMap);

    }

    //4.看牌
    //看name的牌,牌的索引,索引对应的牌的点数
    public static void lookPai(String name, TreeSet<Integer> treeSet, Map<Integer, String> map) {
        String s = name + ":";
        //遍历set集合
        for (Integer i : treeSet) {
            s += map.get(i) + "\t";
        }
        System.out.println(s);
    }
}

标签:练习题,Map,hashMap,list,name,07File,new,public,String
From: https://www.cnblogs.com/wyzel/p/16819842.html

相关文章

  • #yyds干货盘点#JS中的map用法
    map()​​map()​​ 方法会返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。​​map​​​ 方法会给原数组中的每个元素都按顺序调用一次 ​​callback​​......
  • C语言的练习题
    有1,2,3,4四个数字,那能组成多少个互不相同且无重复数字的三位数?都是多少?分析:三位数可表示为:个位:g,十位:s,百位:b.可以有多少组合:用for语句的嵌套#include<stdio.h>intmain(......
  • SpringBoot项目整合Mybatis时Mapper.xml文件的存放位置
    SpringBoot项目整合Mybatis时Mapper.xml文件的存放位置目录:方式一:放在与Mapper接口同级目录方式二:在resources创建Mapper接口同名文件夹用来存放Mapper.xml文件方式三:......
  • PriorityQueue 最小堆&& treemap
    优先队列的作用是能保证每次取出的元素都是队列中权值最小的(Java的优先队列每次取最小元素)。这里牵涉到了大小关系,元素大小的评判可以通过元素本身的自然顺序(naturalorder......
  • P7911 CSP J 2021 T3 纯模拟 无map 代码
    目录申明前置知识sscanf与sprintf应用字符串常用函数代码后记申明解释在注释里注释掉的不用管写错的代码可借鉴原题:洛谷P7911前置知识sscanf与sprintf/*sscanf......
  • List和Map、Set的区别
    List和Map、Set的区别结构特点List和Set是存储单列数据的集合,Map是存储键和值这样的双列数据的集合;List中存储的数据是有顺序,并且允许重复;Map中存储的数据是没有顺序的,......
  • Madoka and the Sixth-graders (全排列队列,每一个点可以向外连1条线题型+倍增法处理
    题意:Madoka的教室里有 nn 个座位,一开始,编号为 ii 的座位上坐着编号为 b_i(1\leb_i\len)bi​(1≤bi​≤n) 的同学。门外有排成一队的,编号从 n+1n+1 开始的,......
  • Add AutoMapper
    (注:本文示例使用的是.NETCore3.1)1.配置(Configuration)Reference:https://docs.automapper.org/en/latest/Configuration.html多种方法配置,这里推荐使用配置文件......
  • Flink如何使用DataStreamAPI消费Kafka
    1、到官网查询所在版本的依赖,导入pom.xml(在此用Flink1.13)官网->教程->connectors->datastream->kafka网址:https://nightlies.apache.org/flink/flink-docs-release-1.1......
  • sqlmap的使用方法(linux)
    原文来自:https://blog.csdn.net/weixin_52084568/article/details/123839776sqlmap的使用方法(linux)sqlmap--version查看sqlmap版本sqlmap-h查看sqlmap帮助  ......