Java 第30天 高级进阶篇 Map接口和实现类的对比

一、Map 实现类结构:

Map 双列数据,存储key–value 对的数据,
HashMap:作为Map的主要实现类:线程不安全的,效率高,存储null的Key 和value
LinkedInHashMap:保证在遍历Map元素时,可以按照添加顺序实现遍历
TreeMap:保证按照添加的key–value对进行排序,实现排序遍历
Hashtable:作为古老的实现类:线程安全的,效率低;不能存储null的Key 和value
properties:常用来处理配置文件,key 和value 都是String类型。。

HashMap的底层:
数组+列表(JDK 7 之前)
数组+链表+红黑树(JDK 8之前)
在这里插入图片描述

二、Map 结构的理解:

Map 中的Key:无序的、不可重复的,使用Set存储所有的key ;Key所在的类要重写equals() 和Hashcode()以HashMap为例。

Map中的value:无序的、可重复的,使用collection存储所有的Value

一个键直对:Key–value构成了Entry 对象

Map中的Entry:无序的、不可重复的、使用Set 存储所有的Entry

三、HashMap的底层实现原理与LinkedInHashMap底层实现原理。

JDK7和 JDK 8的区别

百度,查看

四、Map 常用方法:

Map map = new HashMap();

1、添加
map.put(“AA”,123);

2、修改
map.put(“AA”,87);
putALL(Map m):将m中的所有key—value 对存放到当前map中
map1.putAll(map1);

3、remove 移除

    Object value= map.remove("CC");
    System.out.println(value);
    System.out.println(map);

4、clear()清空操作

 map.clear();
    System.out.println(map.size());

@Test
public void test2(){
Map map = new HashMap();
map.put(“AA”,123);
map.put(“BB”,456);
map.put(“CC”,899);
map.put(“DD”,10000);

5、 object get(object key)
System.out.println(map.get(“DD”));

6、 containskey (Object key )

boolean isExist =map.containsKey("CC");
System.out.println(isExist);

7、 isExist =map.containsKey(123);
System.out.println(isExist); //false

8、map.clear();

System.out.println(map.isEmpty());
}

}

五、遍历获取:键、值、对: key-value

@Test
public void test3(){
Map map = new HashMap();
map.put(“AA”,123);
map.put(“BB”,456);
map.put(“CC”,899);
map.put(“DD”,10000);
// 遍历所有key 集:keySet()
Set set = map.keySet();
Iterator iterator =set.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
// 遍历所有value集合:values()
Collection values =map.values();
for (Object obj:values){
System.out.println(obj);
}
// 遍历所有的Key–Value
// 方式一: EntrySet
Set entryset =map.entrySet();
Iterator iterator1 = entryset.iterator();
while (iterator1.hasNext()){
Object obj = iterator1.next();
Map.Entry entry= (Map.Entry)obj;
System.out.println(entry);
System.out.println(entry.getKey() +"---------"+entry.getValue());
}
}
}
// 方式二:

Set keySet = map.keySet();
Iterator iterator2 =keySet.iterator();
while (iterator2.hasNext()){
Object key =iterator2.next();
Object value =map.get(key);
System.out.println(key +"---------" +value);
}
在这里插入图片描述

// 遍历常用方法:
添加: put(Object key Object values )
删除:remove
修改:put(Object key )
查询:get
长度:size()
插入:keySet() / values() / entryset()

六、Map 实现类之五:Properties
1、Properties 类是Hashtable的子类,该对象用于处理属性文件.
2、由于属性文件中的key 、value都是字符串类型,所以 Properties里的key 和value都是字符串类型。
3、栗子:Properties 简单使用

1、在IDE中 当前工程下创建JDBC 文件,自动会到当前工程的目录。
2、右键New 选择File 和 Resoure Bundile 都可以;这里选择的是后者。
在这里插入图片描述
在这里插入图片描述

七、Collections 工具类

在这里插入图片描述
面试题:Collection 和 Collections的区别?

1.Collection:
是集合类的上层接口。本身是一个Interface,里面包含了一些集合的基本操作。
Collection接口时Set接口和List接口的父接口
2.Collections
Collections是一个集合框架的帮助类,里面包含一些对集合的排序,搜索以及序列化的操作。
最根本的是Collections是一个类,
Collections 是一个包装类,Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素, 而另一些则不允许,一些 collection 是有序的,而另一些则是无序的。

 
 
 
如果我的博客对你有帮助、如果你喜欢我的博客内容,请“点赞” “评论”“收藏”一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值