双列集合Map----HashMap---TreeMap

23 篇文章 0 订阅
本文介绍了Java中Map接口的两种实现类:HashMap和TreeMap。HashMap基于哈希表,依赖键的hashCode和equals方法确保键的唯一性;而TreeMap采用红黑树结构,根据键的自然排序或比较器进行排序。两者都提供了增、删、改、查等基本操作。
摘要由CSDN通过智能技术生成

Map

双列集合一次可以存两个元素
每次存储的首个元素称为::特点是不能重复
第二个元素称为: :特点是可以重复
这样的一个组合称为:键值对-键值对对象。java语言用:Entry对象表示
在这里插入图片描述

小结:

Interface Map<K,V> 是顶级接口。K表示:键的数据类型, V表示:值的数据类型。

其中 键是不能重复的,值是可以重复的。

键和值是一一对应的,每一个键只能找到自己对应的值。

(键 + 值)这样的一个组合称为:"键值对"或"键值对对象"。java语言叫:"Entry对象"

Map的基本使用:

它是一个接口,使用时需要创建子类对象。
Map接口的增 ,删, 改, 查方法:
所有的实现类都可以用
在这里插入图片描述

增   删   改   查
V put(K key, V value)  添加元素
 //注意:如果添加时键是不存在的,那么就把键值对都添加到地图中
 //如果键出现了重复的现象,那么会覆盖原来的值,并返回被覆盖的值
V remove(Object key) 根据键,从该地图中删除元素,返回被删除的 值
void clear() 从该地图中删除所有的元素
boolean containsKey(Object key) 判断地图中是否包含指定键的,有则返回true
boolean containsValue(Object value) 判断地图中是否包含一个或多个指定的值,有则返回true
boolean isEmpty() 判断地图是否为空
int size() 返回集合的长度,也就是键值对的个数。

Map的遍历方法:

V get(Object key) //返回 指定的键 对应 的值
Set<K>  keySet()  //返回Set集合包含了所有键的集合
//使用以上方法组合进行遍历
//先获取所有的键,存入Set集合并返回,根据Map中的get(Object key)方法获得对应的值
 public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        map.put("键001", "值aaa");
        map.put("键002", "值bbb");
        map.put("键003", "值ccc");
        map.put("键004", "值ddd");
      //获取所有的键,存入Set集合并返回
     Set<String> keys = map.keySet();
    for (String key : keys) {
      //根据Map中的get(Object key)方法获得对应的值
      String value = map.get(key);
   	  System.out.println(key+"----"+value);
	}
}  

 Set<Map.Entry<K,V>>  entrySet()
 // 返回Set集合包含所有的键值对对象(Entry对象)
   K getKey();//获得键
   V getValue();//获得值
   System.out.println("==================");
     //获取所有的Entry对象,存入Set集合并返回
     Set<Map.Entry<String, String>> entries = map.entrySet();
     for (Map.Entry<String, String> entry : entries) {
        //根据Set集合中的getKey setValue方法获得键和值
        String key = entry.getKey();
        String value = entry.getValue();
        System.out.println(key+"----"+value);
    }
 }  
 void  forEach(BiConsumer<? super K,? super V> action)  
 //对键和值进行操作的方法,也可进行打印
  System.out.println("==================");
  map .forEach(
           (key, value) -> {
        System.out.println(key + "----" + value);
           }
        );

HashMap类:
介绍:
HashMap是Map的实现类。
使用时可以直接根据Map接口中的方法即可。
HashMap与HashSet底层都是以哈希表结构实现的。

注意:
HashMap底层是哈希表结构的
依赖hashCode方法和equals方法保证键的唯一
如果键要存储的是自定义对象,那么必须要重写hashCde和equals方法

TreeMap类:
介绍:
TreeMap是Map的实现类。
使用时可以直接根据Map接口中的方法即可。
TreeMap底层是以红黑树结构实现的。

TreeMap原理:
存储对象时只关心键,不关心值
存储规则同TreeSet,都要遵从红黑树的规则
在这里插入图片描述
注意:
TreeMap底层是以红黑树结构实现的。
依赖自然排序或者比较器排序,对键进行排序,不关心值是什么
如果键存储的是自定义对象,那么需要实现Comparable接口或者在创建TreeMap对象的时候给出比较器排序规则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值