java2018课程 ex2&&hw2笔记

2018-11-01  本文已影响0人  给点阳光我就灿烂_ab56

题目要求:

实验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("做错了");
        
    }
}

上一篇下一篇

猜你喜欢

热点阅读