06Map接口与实现

本文详细介绍了Java中的Map接口,包括其特点、常用操作以及实现类HashMap和TreeMap的工作原理。HashMap允许null键值,是非线程安全的,而TreeMap实现了SortedMap接口,能自动排序。此外,还提到了如何遍历Map及其优化策略,如红黑树的使用。
摘要由CSDN通过智能技术生成

Map集合

Map是一个双列集合接口,如果实现了Map接口,

特点

  1. 数据以键值对形式存在,
  2. 键不可重复,(唯一)
  3. 值可以重复

Map父接口

Map中存放的是两种对象,一种称为key(键),一种称为value(值),它们在在Map中是一一对应关系,这一对对象又称做Map 中的一个Entry(项)。Entry将键值对的对应关系封装成了对象。即键值对对象,这样我们在遍历Map集合时,就可以从每一个键值对(Entry)对象中获取对应的键与对应的值

//创建
Map <String,String>map= new HashMap<>();
map.put("0122","阿娆");
map.put("02","Kimi");
map.put("03","Alice");
//map.put("03","john")
System.out.println("Map个数"+map.size());
System.out.println(map.toString());
//删除
//map.remove("02");
//遍历
//3.1KeySet()
Set<String> keyset=map.keySet();
for (String key:keyset) {
    System.out.println(key+"****"+map.get(key));
}
//3.2    EntrySet
Set<Map.Entry<String,String>> entrySet=map.entrySet();
for (Map.Entry<String,String> entry:entrySet) {
    System.out.println(entry.getKey()+"****"+entry.getValue());
}

Map个数3
{02=Kimi, 03=Alice, 0122=阿娆}
02Kimi
03
Alice
0122阿娆
02
Kimi
03Alice
0122
阿娆

Map集合实现类

HashMap<Student,String> s=new HashMap<Student, String>();
//添加元素
Student s1 = new Student("Kimi",21);
Student s2 = new Student("阿娆",20);
Student s3 = new Student("Alice",19);
s.put(s1,"A");
s.put(s2,"B");
s.put(s3,"C");
s.put(new Student("Alice",200),"D");//可以添加,内存地址不一样,new了新的
System.out.println("元素个数" + s.size());
System.out.println(s.toString());
//删除
//s.remove(s1);
//遍历
//3.1  keySet();
for (Student key:s.keySet()){
    System.out.println(key.toString() + "----" + s.get(key));
}
//3.2  entrySet
for (Map.Entry<Student,String> entry:s.entrySet()){
    System.out.println(entry.getKey() + "***"+entry.getValue());
}

Map个数3
{02=Kimi, 03=Alice, 0122=阿娆}
02Kimi
03
Alice
0122阿娆
02
Kimi
03Alice
0122
阿娆

源码

[](Java HashMap | 菜鸟教程 (runoob.com))

  • HashMap刚创建时,table是null,为了节省空间,当添加第一个元素是,table容量调整为16
  • 当元素个数大于阈值(16*0.75=12)时,会进行扩容,扩容后大小为原来的2倍。目的是减少调整元素的个数。
  • jdk1.8当每个链表长度大于8,并且元素个数大于等于64时,会调整为红黑树,目的提高执行效率
  • jdk1.8 当链表长度小于6时,调整成链表
  • jdk1 .8以前,链表时头插入,jdk1 .8以后时是尾插入

HashTable

  • HashMap【重点】
  • JDK1.2版本,线程不安全,运行效率快 ;允许用null 作为key或是value。
  • Hashtable
    • JDK1.0版本,线程安全,运行效率慢;不允许null作为key或是value。
  • Properties
  • Hashtable的子类,要求key和value都是String。通常用于配置文件的读取。
  • TreeMap
  • 实现了SortedMap接口(是Map的子接口),可以对key自动排序。

TreeMap

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值