美文网首页
java2018课程 ex2&&hw2笔记

java2018课程 ex2&&hw2笔记

作者: 给点阳光我就灿烂_ab56 | 来源:发表于2018-11-01 20:08 被阅读0次

    题目要求:

    实验2-1:字符串content是一个超市的历次购物小票的合计,每个分号一次购物,每个商品之间用半角逗号分开。请开发程序完成如下功能: 找出哪两个商品总被同时购买的频率最高(不考虑商品的先后顺序)。

    1. Java遍历Map对象的四种方式
      参考: https://www.cnblogs.com/fqfanqi/p/6187085.html
      我用了在for-each循环中遍历keys或values:
    int max = 0;
    String theKey = null;
    for(String key : map.keySet()) {
        int nowVal = map.get(key);
        if(max<nowVal) {
        max = nowVal;
        theKey = key;
        }
    }
    
    1. 代码
    package com.huawei.classroom.student.h02;
    
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    
    
    public class Home02 {
    
        public Home02() {
            // TODO Auto-generated constructor stub
        }
        /**
         * 字符串content是一个超市的历次购物小票的合计,每次购物的明细之间用分号分割,每个商品之间用半角逗号分开
         * 请找出   哪两个商品被同时购买的频率最高,将这2个商品名称返回,名称之间用逗号分隔
         * @param content,历次购物的明细,例如:炸鸡,可乐,啤酒;薯片,啤酒,炸鸡;啤酒,雪碧,炸鸡
         * @return 哪两个商品被同时购买的频率最高,将这2个商品名称返回,名称之间用逗号分隔
         */
        public String getFrequentItem(String content)  {
             String[] contents = content.split(";");
             Map<String, Integer> map = new HashMap<>();
             
             for(int i=0;i<contents.length;i++) {
                 String[] single = contents[i].split(",");
                 for(int j=0;j<single.length;j++) {
                     for(int k=1;k<=single.length-1;k++) {
                         int nextIndex = (j+k)%(single.length);
                         String key = single[j]+","+single[nextIndex];
                //       String key2 = single[nextIndex]+","+single[j];
                         if(map.containsKey(key)) {
                                 int newVal = map.get(key) + 1;
                                 map.put(key, newVal);
                            //   map.put(key2, newVal);
                         }else {
                             map.put(key, 0);
                         }
                     }
                 }
             }
             int max = 0;
             String theKey = null;
             for(String key : map.keySet()) {
                 int nowVal = map.get(key);
                 if(max<nowVal) {
                     max = nowVal;
                     theKey = key;
                 }
             }
    //       System.out.println(theKey + max);
             return theKey;
        }
    }
    
    
    1. 测试
    /**
     * 
     */
    package com.huawei.classroom.student.h02;
    
    
    /**
     * @author Administrator
     *
     */
    public class Test {
    
        /**
         * 
         */
        public Test() {
            // TODO Auto-generated constructor stub
        }
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            String content = "炸鸡,可乐,啤酒;薯片,啤酒,炸鸡;啤酒,雪碧,炸鸡;可乐,牙膏;可乐,面包;啤酒,面包;可乐,榨菜;啤酒,雪碧";
            Home02 h=new Home02();
            String result=h.getFrequentItem(content);
            if(result.equals("炸鸡,啤酒")||result.equals("啤酒,炸鸡")) {
                System.out.println("做对了");
            }
            else System.out.println("做错了");
            
        }
    }
    
    

    相关文章

      网友评论

          本文标题:java2018课程 ex2&&hw2笔记

          本文链接:https://www.haomeiwen.com/subject/utcfxqtx.html