Java基础---Map双列集合+HashMap+TreeMap

本文深入解析了Map集合的特点、体系及其实现,包括HashMap、TreeMap和Hashtable的不同特性,以及Map接口的主要方法。同时,详细介绍了三种遍历Map集合的方式,并探讨了如何在Map中进行排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Map(双列)集合:存储成对数据:键值对
    特点:键(key)不能重复,值(value)可以重复
双列集合体系:
---| Map    实现了Map接口的集合类具备的
--------| HashMap     哈希表实现 无序
--------| TreeMap       二叉树结构 可以排序
--------| Hashtable(了解)
---------------------------------------------------------------------------
Map接口方法:
    Map<String, Integer> map1 = new HashMap<String, Integer>()

增加:

 

put(K key, V value)

添加元素到map集合

map1.putAll(map2)

并集

Map的重复健将覆盖旧键,将旧值返回

删除:

 

clear()

清空

remove(Object key)

删除指定key

判断:

 

containsKey(Object key)

判断包含指定key

containsValue(Object value)

判断包含指定value

isEmpty()

判断集合是否为空

获取:

 

get(Object key)

根据key得到value

size()

键值对个数

    遍历
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
Map.Entry对象Set<Map.Entry<k,v>> entrySet()
方式一:使用entrySet方式(利用对象操作)
    Map.Entry对象:Set<Map.Entry<k,v>> entrySet() 将map中的键值映射关系打包对象
    Map.Entry对象通过Map.Entry对象的getKey,getValue获取其键和值。

    Set<Map.Entry<String,String>> entrys  = map.entrySet();
    Iterator<Map.Entry<String,String>> it = entrys.iterator();
    while(it.hasNext()){
        Map.Entry<String,String> entry = it.next();
        System.out.println("键: "+ entry.getKey()+ " 值:" + entry.getValue());

    推荐使用
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
方式二:使用values方法(只能返回值,没意义)
    values方法只返回所有值
    Collection<String> list = map.values();                                                                                  // values 把map集合中的所有值存储到一个Collection集合返回。 
    Iterator<String> it= list.iterator();
    while(it.hasNext()){
        String value = it.next();
        System.out.println("值:"+ value);
    }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        
方式三:使用keySet结合get(key)方法
    keySet方法只返回所有的键,再根据map的get(key)方法得到值
    Set<String> set = map.keySet();  
    //把map集合中所有key的数据存储到Set集合中返回。  
    Iterator<String> it = set.iterator();  //迭代器 
    while(it.hasNext()){
        String key = it.next();
        System.out.println("键:"+ key+" 值:"+ map.get(key));
    }
================================================================

HashMap
    1.底层是哈希表数据结构,线程不同步,可存入null键,null值。
    2.要保证键的唯一性,需要覆盖hashCode方法和equals方法。
        HashMap<Person, String> hm = new HashMap<Person, String>();

Hashtable
    1.Hashtable是基于陈旧的Dictionary类,线程同步安全
   

TreeMap
    1.TreeMap可以对集合中的键进行排序
        TreeMap<String, Integer> tree = new TreeMap<String, Integer>();

================================================================
排序
方式一:元素自身具备比较性(默认排序)
    和TreeSet相同原理,利用键对象实现Comparable接口,重写compareTo方法
方式二:容器具备比较性
    自定义类实现接口Comparator,重写compare方法,
    并将该接口的子类实例对象作为参数传递给TreeMap集合的构造方法。
    class MyComparator implements Comparator<Person> {自定义规则}
    TreeMap<Person, String> hm = new TreeMap<Person, String>(new MyComparator());

注意:优先性:比较器Comparator >>  Comparable接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值