集合框架之Map集合

1.Map集合的特点:

        (1)无序性:添加元素的顺序与输出顺序不一致

        (2)以键值对的形式储存元素(Map<key,value>)

        (3)键唯一,值不唯一。

        (4)与Set集合与List集合不同,它不是Collection的子接口。

2.遍历方式:

        由于Map集合的无序性,和没有实现Collection接口的特点,它既不能使用for循环进行遍历,也不能直接调用迭代器,只能使用foreach循环,但是它仍有三种取值方式:

        (1)获取所有keys:

Map<String,String> map=new HashMap();
    //注意,Map集合使用put()方法添加元素
    map.put("pid","1");
    map.put("name","李四");
    map.put("sex","男");
    map.put("addr","长沙");
    //获取所有的key值
    Set<> keys=map.keySet();
    keys.forEach(System.out::println);

           (2) 获取所有的value值:

//获取并接收所有的value值
Collection<Object> values=map.values();
//循环遍历
values.forEach(System.out::printnl);

            (3)获取所有的键值对

//获取并接收键值对
Set<Map.Entry<String,String>> entry=map.entrySet();
//循环遍历
entry.forEach(a->{
    System.out.println(a)
})

3.HashMap与Hashtable的区别:

        (1)HashMap允许null值插入,Hashtable不允许。

        (2)Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现 

        (3)HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,在只有一个线程访问的情况下,效率要高于Hashtable。

4.TreeMap:

        (1)reverseOrder降序排序

Map<String,Object> map=new TreeMap<>(Comparator.reverseOrder());
map.put("2","ls");
map.put("1","ww");
map.put("4","zs");
map.put("3","xl");

map.forEach((k,v)->{
    System.out.println(k+"="+v);
});

        (2)Value值排序

Map<String,Object> map=new TreeMap<String,Object>();
map.put("2","ls");
map.put("1","ww");
map.put("4","zs");
map.put("3","xl");

//按照map中的value属性排序
List<Map.Entry<String,Object>> lst=
        new ArrayList<Map.Entry<String,Object>>(map.entrySet());

Collections.sort(lst, new Comparator<Map.Entry<String, Object>>() {
    @Override
    public int compare(Map.Entry<String, Object> o1, Map.Entry<String, Object> o2) {
        return -o1.getValue().toString().compareTo(o2.getValue().toString());
    }
});

lst.forEach(s->{
    System.out.println(s);
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值