Map(HashMap,Hashtable,LinkedHashMap,TresMap)之间的操作和区别

声明 

Map只是一个接口,HashMap,Hashtable,LinkedHashMap,TresMap们都是实现了map接口所以我们创建的时候一般创建他的子实现类,他们四个的方法都是继承自map没有区别,所以下面演示的时候只做一次方法的演示,他们之间的区别分HashMap,Hashtable二者间的区别HashMap,Hashtable二者间的区别。方法演示过后会说明他们的区别

HashMap 

第一个我做一下方法的演示(后续三个不在做方法演示),从第二个开始我开始逐一说明他们之间的区别,方法代码如下

    public static void main(String[] args) {

        Map<Integer,String> map=new HashMap();
        //        map的插入方法 建议 先规定好map的泛指,如果不规定,里面的键值对是独立存在的
//        就可能造成key 和value的混乱 ,比如我这里如果没有定义泛型 那么我可以这样插入
//          map.put("1","一");
//        map.put(2,"二");
        System.out.println("===================增====================");
//        一个一个增加
        map.put(1,"一");
        map.put(2,"二");
        map.put(3,"三");
//        注意map中的替换 就是依靠添加的覆盖功能来实现
        map.put(3,"覆盖掉了本来的三");
        System.out.println(map);
        Map<Integer,String> map2=new HashMap();
//        map的插入方法
        map2.put(4,"四");
        map2.put(5,"五");
        map2.put(6,"六");
        System.out.println(map2);
//        按照map增加
        map.putAll(map2);
        System.out.println("按照集合增加后的结果");
        System.out.println(map);
        System.out.println("===============删除===================");
//        直接清空
        map.clear();
        System.out.println("清空后打印结果为map:"+map);
//    一个一个删除  根据key值删除  ,返回值为被删除的value

        System.out.println("返回被删除的value:"+ map2.remove(5));
        System.out.println("只删除一个的结果为:"+map2);
        System.out.println("==================查找=================");
//        以下返回值都是boolean类型
//        根据查询是否存在key值
        System.out.println("根据查询是否存在key值");
        System.out.println(map2.containsKey(5));
        System.out.println(map2.containsKey(6));
        //        根据查询是否存在value值
        System.out.println(" 根据查询是否存在value值");
        System.out.println(map2.containsValue("五"));
        System.out.println(map2.containsValue("六"));
//        查询是否为空
        System.out.println("查询是否为空");
        System.out.println(map.isEmpty());
        System.out.println(map2.isEmpty());
        System.out.println("============大小==========");
        int size=map2.size();
        System.out.println(size);
        System.out.println("遍历的二种方式");
        //        keySet()方法用来获取整个map中的 key值的集合
        System.out.println("增强for循环遍历,没有索引不能用普通的for");
        Set<Integer> keys=map2.keySet();
//       同过遍历得到的key值的集合 来间接遍历来获得整个map
        for (Integer num : keys) {
            System.out.println(num+":"+map2.get(num));
        }
//        迭代器直接遍历value
        System.out.println("迭代器遍历value");
        Iterator it=map2.values().iterator();
        while (it.hasNext()){
            String str= (String) it.next();
            System.out.println(str);
        }
        //        迭代器直接遍历key
        System.out.println("迭代器遍历key");
        Iterator it2=map2.keySet().iterator();
        while (it2.hasNext()){
           int key= (int) it2.next();
            System.out.println(key);
        }

    }

 

Hashtable 

//       Hashtable中方法和Hashmap中的一样
//       但是存在一些注意事项 下面值演示注意事项
        Map<Integer,String> map=new Hashtable<>();
//        map的插入方法
        map.put(1,"一");
        map.put(2,"二");
        map.put(3,"三");
        System.out.println(map);
        System.out.println("因为我限制了泛型所以key的不为null就不做演示了,key和value一样可以为字符串空;,但是不可为null");
        map.put(1,"");
//        try {
//            map.put(1,null);
//        }catch (Exception e){
//            e.printStackTrace();
//        }

        System.out.println(map);
        Map<Integer,String> map2=new HashMap<>();
//        map的插入方法
        map2.put(1,"一");
        map2.put(2,"二");
        map2.put(3,"三");
        System.out.println(map2);
        map2.put(1,"");
        map2.put(1,null);
        System.out.println(map2);

    }

注意:捕获异常部分就能够捕获到错误信息,说明了Hashtable里面的键值对不能为null但是可以为字符串""空

LinkedHashMap,TresMap 
 

    public static void main(String[] args) {
        Map<Integer,String> map=new LinkedHashMap();
        System.out.println("按照插入的顺序插入");
        map.put(5,"五");
        map.put(8,"八");
        map.put(3,"三");
        map.put(4,"四");
        System.out.println(map);
        Map map2=new TreeMap();
        System.out.println("按照hashcode值的大小顺序插入");
        map2.put(5,"五");
        map2.put(8,"八");
        map2.put(3,"三");
        map2.put(4,"四");
        System.out.println(map2);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值