map和泛型

map

  • Map 保存键值对 K V
  • 无序 key 不可重复 value 可重
  • Map和Collection不一样,但基本操作是一样的
  • Map用来保存映射关系
  • 比如 商品,商品的名称,产地,单价等属性,都是商品的属性,但是购买数量不是商品的属性,不能放到商品类
  • 那么如何存储这个商品 购买的数量呢? 使用map,用商品作为key,购买数量作为value
  • 或者是一些统计操作,比如 现在有一个字符串“sdafsa”,需求是每个字符出现的次数
  • 字符作为key,次数作为value
  • map不能直接遍历,需要转换为集合之后进行比遍历
  • Properties 一个特殊的map,键和值 比较都是字符串
  • TreeMap 添加的元素必须按照某个规则进行排序
    1 被添加的元素 实现 Comparabl
    2 单独提供一个 Comparator 比较器类
 public static void main(String[] args) {
        HashMap map = new HashMap();
        map.put("a", 1);
        map.put("b", 2);
        map.put("c", 3);
        map.put("d", 4);
        //values :获取所有的value 返回一个collection
        Collection values = map.values();
        for (Object object : values) {
            System.out.println(object);
        }
        System.out.println("------");
        //keySet:获取所有的key,返回Set
        Set keys = map.keySet();
        for (Object key : keys) {
            //获取value
            Object value = map.get(key);
            System.out.println(key + ":" + value);
        }
        System.out.println("=======");
        // entrySet:entry对象中可以存储key和value,我们只需保存entry 就等于把kv都存储了
        //把map中的kv 封装到entry对象中,并以set方式返回
        Set entrys = map.entrySet();
        for (Object object : entrys) {
            Entry entry = (Entry) object;
            //			System.out.println(object);
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }

    }

泛型

  • 类型检查,在编译过程中检查类型是否匹配
  • 泛型之只能是引用类型,不能写基本类型
  • 优点 : 统一了数据类型,减少了强制类型转换,使用
  • 缺点 : 统一了数据类型,只能保存单一类型的数据
  • E : Element , K : Key , V : Value , T : Type
 public static void main(String[] args) {
        //没有使用泛型,什么类型都能保存
        List list = new ArrayList();
        list.add(1);
        list.add("");
        list.add(new Map_05_Generic_01());
        for (Object object : list) {
            //这里取出的数据只能是Object类型,用的时候需要判断和强制类型转换
        }

        //使用泛型后,只能保存Integer类型
        List<Integer> ss = new ArrayList<Integer>();
        ss.add(2);
        //添加字符串就会报错
        //ss.add("sd")
        for (Integer integer : ss) {
            //用的时候,拿出来的就直接是Integer类型,不需要类型转化
            integer.intValue();
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值