java map接口特点,JavaSE-Map接口

1.What is Map?

首先说明几个概念:

Colllection

Colllection接口为基本的接口,存储对象有List、Set、Quene。List为有序的允许重复的Collection,Set为无序不允许重复的Collection。

哈希表

​​

哈希表也称散列表,根据关键码值key 进行访问的数据结构,也就是说,能够将关键码

映射到表中一个位置我们就可以去访问其记录value,加快查找的速度,这个映射函数

叫做散列函数,存放记录的数组叫做散列表

数组:寻址容易O(1),插入和删除困难O(N)

链表:寻址困难O(N),插入和删除容易O(1)

综合两者的特性,变成了一个寻址容易,插入删除也容易的数据结构

哈希表有多种不同的结构(实现),我们介绍的是最常用的结构-拉链法(链地址法)

Map接口

Map,图,是一种存储键值对映射的容器,在Map中键可以是任意类型的对象,但是键 不允许重复的。

每一个键对应有一个值如 name(Tom)-age(13)

HashMap基于哈希表的Map接口的非同步实现,继承自AbstractMap,AbstractMap 是部分实现Map接口的抽象类。

jdk1.8之前 数组+链表

jdk1.8 数组+链表+红黑树

红黑树:

红黑树是一种自平衡二叉查找树 它在O(log2 N)的时间内做查找、添加、删除 红黑树和AVL树是二叉查找树的变体,红黑树的性能要好于AVL树

红黑树特点:

1) 每个节点是红色或黑色

2)根节点一定是黑色

3)每个叶子节点是黑色

4)如果一个节点是红色,则叶子节点必须是黑色

5)每个节点到叶子节点所经过的黑节点的个数必须是一样

Iterator

terator迭代器是每个集合都有的一个对象。

Java中的Iterator功能比较简单,并且只能单向移动:

(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。

(2) 使用next()获得序列中的下一个元素。

(3) 使用hasNext()检查序列中是否还有元素。

(4) 使用remove()将迭代器新返回的元素删除。

Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。

2.先使用再了解

定义一个Map对象,测试如何初始化及各种方法的使用。

package collection;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

public class TestDemo10 {

public static void main(String[] args) {

//1.声明HashMap对象

Map map = new HashMap<>();

//2.添加数据 put

map.put("zhangsan", 90);

map.put("wangwu", 79);

map.put("lisi", 80);

//3.根据键获取值 get

System.out.println("根据键获取值:"+map.get("zhangsan"));

//4.获取Map中键值对的个数

System.out.println("map当中键值对的个数:"+map.size());

//5.判断Map集合是否包含键为key的键值对

System.out.println(map.containsKey("tom"));

System.out.println(map.containsKey("zhangsan"));

//6.判断Map集合是否包含值为value的键值对

System.out.println(map.containsValue(90));

System.out.println(map.containsValue(100));

//7、根据键删除Map中的健值对 remove

System.out.println(map.remove("zhangsan"));

System.out.println(map.remove("tom"));

//8、获取HashMap中的所有键值对

Iterator> iterator = map.entrySet().iterator();

while(iterator.hasNext()){

Map.Entry next = iterator.next();

System.out.println(next.getKey()+":: "+next.getValue());

}

}

}

测试结果:

5c2f9233a78068be07e9a14a0c3cb95a.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值