HashMap与TreeMap的排序以及四种遍历方式

8 篇文章 16 订阅
8 篇文章 16 订阅

一、Map概述

1、Map是将键映射到值( key-value )的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

2、Map与Collection的区别

    (1)Map 是以键值对的方式存储元素,键唯一,值可以重复。

    (2)Collection存储的是单列元素,子接口Set元素唯一,子接口List可以重复。

    (3)Map的数据结构针对键有效,跟值无关,Collection针对元素有效。

3、HashMap 与TreeMap 的创建,排序。


/***
 * Map类的一些简单操作
 * 包括TreeMap的排序,HashMap的排序,四种遍历方式
 * @author Administrator
 *
 */
public class MapTest {
 
    public static void main(String[] args) {
 
        //创建map对象,并赋值
        
        Map<String,String> treeMap = new TreeMap<String,String>(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.compareTo(o2);
            }
        });
        
        treeMap.put("sufow1", "舒泉1");
        treeMap.put("sufow2", "舒泉2");
        treeMap.put("sufow3", "舒泉3");
        treeMap.put("sufow4", "舒泉4");
        treeMap.put("sufow5", "舒泉5");
        treeMap.put("sufow6", "舒泉6");
        treeMap.put("sufow7", "舒泉7");
        
        System.out.println("TreeMap");
        
        //遍历map 方式一,根据keyset方法获取所有的key,再根据key获取值
        for(String str :treeMap.keySet()){
            String val = treeMap.get(str);
            System.out.println(val);
        }
        
        Map<String,String> hashMap = new HashMap<String ,String>();
        
        
        hashMap.put("sufow1", "舒泉1");//可以写入null值
        hashMap.put("sufow2", "舒泉2");
        hashMap.put("sufow3", "舒泉3");
        hashMap.put("sufow4", "舒泉4");
        hashMap.put("sufow5", "舒泉5");
        hashMap.put("sufow6", "舒泉6");
        hashMap.put("sufow7", "舒泉7");
        
        System.out.println("HashMap");
        
        //先排序
        
        List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(hashMap.entrySet());
        
        //通过比较器来排序
        Collections.sort(list, new Comparator<Map.Entry<String, String>>() {
            @Override
            public int compare(Entry<String, String> o1,
                    Entry<String, String> o2) {
                return o1.getValue().compareTo(o2.getValue());
            }
        });
        
        //遍历List,第二种通过Map.Entry
        for(Map.Entry<String, String> m :list){
            String val =  m.getValue();
            System.out.println(val);
        }
        
        //第二种遍历map的方式,根据迭代器Iterator
        Iterator<Map.Entry<String, String>> iterator = hashMap.entrySet().iterator();
        
        while(iterator.hasNext()){
            Map.Entry<String, String> map = iterator.next();
            System.out.println(map.getKey());
            System.out.println(map.getValue());
        }
        
        //第三种通过values,只能遍历value
        for(String str:hashMap.values()){
            System.out.println(str);
        }
        
        
        //第四种,通过Map.Entry
        for(Map.Entry<String, String> map:hashMap.entrySet()){
            System.out.println(map.getKey());
            System.out.println(map.getValue());
        }
    }

 

4、总结

(1)map排序的两种方式

         第一种:通过 new Comparator的接口,实现方法,进行排序。

         第二种:先将Map转换成List , 通过Collections的sort方法进行排序。

(2)Map的四种遍历方式

        第一种:通过Map的keySet()方法遍历。

        第二种:通过Map的values()方法遍历。

        第三种:通过Map的entrySet()方法的Iterator方法将转换成Iterator。通过迭代器遍历。

        第四种:通过Map的entrySet()方法,将其转换成Map.Entry对象,在通过foreach遍历,通过Map.Entry对象的getValue()获取值。
--------------------- 
作者:loy的填坑生活 
来源:CSDN 
原文:https://blog.csdn.net/zousufow/article/details/56843979 
 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值