Map集合小练习-统计投票人数

 答案部分:

/**
 * 目标:完成Map集合的案例:统计投票人数。
 */
public class MapDemo4 {
    public static void main(String[] args) {
        // 1、把80个学生选择的景点数据拿到程序中来。
        List<String> data = new ArrayList<>();
        String[] selects = {"A", "B", "C", "D"};
        Random r = new Random();
        for (int i = 1; i <= 80; i++) {
            // 每次模拟一个学生选择一个景点,存入到集合中去。
            int index = r.nextInt(4); // 0 1 2 3
            data.add(selects[index]);
        }
        System.out.println(data);

        // 2、开始统计每个景点的投票人数
        // 准备一个Map集合用于统计最终的结果
        Map<String, Integer> result = new HashMap<>();

        // 3、开始遍历80个景点数据
        for (String s : data) {
            // 问问Map集合中是否存在该景点
            if(result.containsKey(s)){
                // 说明这个景点之前统计过。其值+1. 存入到Map集合中去
                result.put(s, result.get(s) + 1);
            }else {
                // 说明这个景点是第一次统计,存入"景点=1"
                result.put(s, 1);
            }
        }
        System.out.println(result);
    }
}

个人练习部分:

/**
 * //四个景点用四个数字代替,用循环八十次来存储每个数字作为value,学生编号作为key
 *         //遍历key和value来统计value的出现次数
 *         //通过value的次数最后判断去的地点
 */
public class test01{
    public static void main(String[] args) {
        //int jingdain[]={0,1,2,3};//定义数组存储景点 0:故宫 1:八达岭长城 2:香山公园 3:泰山
        List<Integer> chose=new ArrayList<>();//存储80个学生的选择
        Map<Integer,Integer> toupiao=new HashMap<>();//key:投票地点 value:选择次数
        Random r=new Random();
        //将随机数存入集合
        for (int i = 0; i < 80; i++) {
            int i1 = r.nextInt(4);
            chose.add(i1);
        }
        System.out.println(chose);
        for (Integer in : chose) {
            if (toupiao.containsKey(in)){
                //如果投票结果中的key包含集合中的元素则value+1
                toupiao.put(in,toupiao.get(in)+1);
            }else {
                toupiao.put(in,1);
            }
        }
        toupiao.forEach((k,v)-> System.out.println("结果公示:"+k+":"+v));
        /**
         * 后续通过Switch来插入景点名称
         */
    }
}

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 HashMap统计每个单词出现的次数。可以将每个单词作为键,出现的次数作为值存入 HashMap 中。每当遇到一个单词时,如果它已经在 HashMap 中,则将对应的值加 1;如果不存在,则将其作为新的键插入 HashMap 并将值设为 1。 示例代码: ``` Map<String, Integer> wordCount = new HashMap<>(); for (String word : words) { if (wordCount.containsKey(word)) { wordCount.put(word, wordCount.get(word) + 1); } else { wordCount.put(word, 1); } } ``` 在上面的示例中,“words”是一个存储单词的数组。 ### 回答2: 在Java集合类中,map是一种非常重要的数据结构,而hashmapmap中比较常用的一种实现方法。使用hashmap可以很方便地统计各单词出现的次数。 首先,我们需要定义一个hashmap对象,用来存放单词和对应的出现次数。HashMap的声明如下: HashMap<String, Integer> map = new HashMap<String, Integer>(); 其中,第一个String代表单词,第二个Integer代表出现次数。 接下来,我们需要读取文本文件,并按行进行分割,将每一行中的单词加入到hashmap中。代码如下: try { FileReader fr = new FileReader("test.txt"); //读取文件 BufferedReader br = new BufferedReader(fr); //缓存读取器 String line; while ((line = br.readLine()) != null) { //按行读取文件 String[] words = line.split("[\\s]+"); //按空格分割 for (String word : words) { //遍历每个单词 if (map.containsKey(word)) { //如果map中已经包含该单词 int count = map.get(word); //获取其出现次数 map.put(word, count + 1); //将其出现次数+1后重新放入map中 } else { //如果map中不包含该单词 map.put(word, 1); //将其出现次数设为1,并放入map中 } } } br.close(); //关闭读取器 } catch (IOException e) { e.printStackTrace(); } 这段代码通过FileReader和BufferedReader读取文本文件,然后按行进行分割,并使用正则表达式按空格进行分割。接着遍历每个单词,如果map中已经包含该单词,则获取其出现次数并将其加1,否则将其出现次数设为1,然后放入map中。 最后,我们需要遍历hashmap,输出各单词出现的次数。代码如下: for (Map.Entry<String, Integer> entry : map.entrySet()) { //遍历map System.out.println(entry.getKey() + ": " + entry.getValue()); //输出单词和出现次数 } 这段代码通过entrySet方法遍历map,然后使用getKey和getValue方法分别获取单词和出现次数,并输出到控制台上。 综上所述,通过使用hashmap可以很方便地统计各单词出现的次数。 ### 回答3: HashMapjava.util 包中的一个映射接口,其实现类HashMap对应着哈希表数据结构,HashMap中的数据是通过键值对(key-value)进行存储和访问。在需要统计一组文本中各个单词出现次数的场景中可以使用HashMap来实现。 步骤如下: 1. 将文本内容按照空格分割成单个单词,可以使用split()方法; 2. 遍历分割后的单词数组,将每个单词存储到HashMap中; 3. 在存储时需要判断该单词是否已经存在于HashMap中,如果已经存在则直接将该单词对应的值加1,否则将该单词作为键值加入HashMap,对应的初始值为1; 4. 遍历完所有单词之后就可以得到所有单词及其出现次数的统计结果了,可以使用Map.Entry<K, V>类型的对象遍历HashMap,其中K代表键值,V代表该键值对应的单词出现次数。 举个例子,文本内容为“Hello World Java World Hello”,将其按照空格分割后得到单词数组{“Hello”,“World”,“Java”,“World”,“Hello”}。现在需要统计各个单词出现的次数,按照步骤存储到HashMap中,详细过程如下: Map<String, Integer> map = new HashMap<>(); String[] words = {"Hello", "World", "Java", "World", "Hello"}; for (String string : words) { if(map.get(string) != null) { map.put(string,map.get(string) + 1); } else { map.put(string, 1); } } for(Map.Entry<String, Integer> entry : map.entrySet()) { System.out.println("单词:" + entry.getKey() + " 出现次数:" + entry.getValue()); } 输出结果为: 单词:Java 出现次数:1 单词:World 出现次数:2 单词:Hello 出现次数:2 以上就是使用HashMap实现文本中各个单词出现次数统计的步骤,适用于处理大量文本数据的场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值