泛型练习题

package cn.maplearn.demo;

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

public class PracticeDemo {
    /*
    练习:学生对象(姓名,年龄)都有对应的归属地
    key=Student value=String 
    */
    public static void main(String[] args) {
//      将学生和归属存储到HashMap集合中并取出,同姓名同年龄视为同一个学生
        Map<Employee, String> map=new HashMap<Employee, String> ();
        map.put(new Employee("张三  ",25), "中国");
//      map.put(new Employee("李四  ",13), "乌克兰");
        map.put(new Employee("王五 ",5457), "北京");
        map.put(new Employee("李四  ",13), "乌克兰");//键不能保证唯一性了,需要修改hasCode()和equals()
        map.put(new Employee("李四  ",13), "上海");
//      map.put(new Employee("李四  ",13), "广州");
        map.put(new Employee("赵六",13), "上海");

        Set<Employee> keySet=map.keySet(); 
        for (Employee employee : keySet) {
            String value=map.get(employee);
            System.out.println(employee.getName()+":"+employee.getAge()+"....."+value);
        }



        /*
        for (Employee employee : map.keySet()) {

        }
        */  
}
}
package cn.maplearn.demo;

import java.util.HashMap;
import java.util.Map;

public class PracticeDemo3 {
    /*  
    什么时候使用map集合呢?
    当需求中出现映射关系时,应最先想到的map集合

    根据用户的制定数据获取对应的星期
*/
    public static void main(String[] args) {
        String cnWeek=getCnWeek(3);
        System.out.println(cnWeek);
        String enWeek =getEnWeek(cnWeek);
        System.out.println(enWeek);
    }

    public static String getCnWeek(int num) {
        if(num<=0 || num>7){
            throw new NoWeekException(num+"没有对应的星期");
        }
        String[] cnWeeks={"","星期一","星期二","星期三","星期四","星期五","星期六","星期天"};
        return cnWeeks[num];
    }

//  根据中文的星期获取对应的英文星期?
    public static String getEnWeek(String cnWeek) {
//      创建一个表
        Map<String, String> map=new HashMap<String,String>();
        map.put("星期一", "Monday");
        map.put("星期二", "Tuesday");
        map.put("星期三", "Wednesday");
        map.put("星期四", "Thursday");
        map.put("星期五", "Friday");
        map.put("星期六", "Saturday");
        map.put("星期天", "Sunday");

        return map.get(cnWeek);
    }
}
package cn.maplearn.demo;

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

public class practiceDemo4 {
    /**
    * @param 作业:“dfifdkgkdfkgk”
    * 获取字符串中第一个字母出现的次数,要求结果格式:a(2)b(1)d(3)
    * 思路:
    * 1、获取到字母
    * 2、如何获取到字母次数?比较
    * 发现字母和次数有对应关系,而且对应关系的一方具备唯一性
    * 就想到了Map集合。Map集合就是一张表
    * 
    * 3、使用查表法就可以了。
    *   先查第一个字母在表中出现的次数,如果次数不存在,说明是第一次出现,将该字母和1存储到表中
    *   以此类推,当要查的次数存在,将次数取出并自增后,再和对应的字母存储到表中,mam表的特点是相同键,值覆盖
    * 4、查完每一个字符后,表中存储的就是每一个字幕出现的次数
    */
    public static void main(String[] args) {
        String string="dfifdkgk--dfk++gk";
        String count=getCharCount(string);
         System.out.println(count);
    }

    /**
     * @param string
     * @return
     */
    private static String getCharCount(String string) {
//      将字符串转换成字符数组
        char[] chs=string.toCharArray();
//      定义map集合表
        Map<Character, Integer> map=new TreeMap<Character,Integer>();
//      遍历字符数组,获取每一个字母
        for (int i = 0; i < chs.length; i++) {
//          只对字母操作
            if(!(chs[i]>='a' && chs[i]<='z' || chs[i]>='A'&& chs[i]<='Z'))
                continue;
//          将遍历到的字母作为键去查表,获取值
            Integer value=map.get(chs[i]);

            /*if(value==null){
                map.put(chs[i], 1);
            }else {
                value++;
                map.put(chs[i], value);
            }*/

//          方式二
            int count=0;//用于记录次数
//          如果次数存在,就用count记录该次数,如果次数不存在,就不记录,只对count自增变成1
            if(value!=null){
                count=value;
            }
            count++;
            map.put(chs[i], 1);         
        }
//      System.out.println(map);
        return toString(map);
    }

//  将map集合中的元素转成指定格式的字符串 a(2) b(1) d(3)
    private static String toString(Map<Character, Integer> map) {
//      1、数据多,无论类型是什么,最终都要变成字符串,所以可以使用StringBuilder
        StringBuilder stringBuilder=new StringBuilder();
//      遍历集合map  keySet
        Set<Character> keySet=map.keySet();
        for (Iterator <Character> iterator = keySet.iterator(); iterator.hasNext();) {
            Character key = iterator.next();
            Integer value=map.get(key);
            stringBuilder.append(key+"("+value+")");
        }
        return stringBuilder.toString();
    }
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值