Map接口
来源:互联网 发布:程序员第一天上班想哭 编辑:程序博客网 时间:2024/06/08 18:28
在现实生活中有些数据是以映射关系存在的,也就是成对存在的,比如:
民政局 :
键 值
老公 老婆
身份证 人
一把钥匙 锁
双列集合:
-------------| Map 如果是实现了Map接口的集合类,具备的特点: 存储的数据都是以键值对的形式存在的,键不可重复,值可以重复。
----------------| HashMap 底层是基于哈希表实现的。
HashMap的存储原理:
往HashMap添加元素的时候,首先会调用键的hashCode方法得到元素的哈希码值,然后经过运算就可以算出该元素在哈希码中的存储位置。
情况1:如果算出的位置目前没有任何元素存储,那么该元素可以直接添加到哈希表中。
情况2:如果算出的位置目前已经存在其他的元素,那么还会调用该元素的equals方法与这个位置上的元素进行比较,如果equals方法返回的是false, 那么该元素允许被存储,如果equals方法返回的是true,那么该元素被视为重复元素,不允许存储。
----------------|TreeMap也是基于红黑树(二叉树)数据结构实现的,特点:会对元素的键进行排序存储
TreeMap要注意的事项:
1.往TreeMap添加元素的时候,如果元素的键具备自然顺序,那么就会按照键的自然顺序特性进行排序存储。
2.往TreeMap添加元素的时候,如果元素的键不具备自然顺序,那么键所属的类必须要实现Comparable接口,把键的比较规则定义在CompareTo方法上。
3.往TreeMap添加元素的时候,如果元素的键不具备自然顺序,而且键所属的类也没有实现Comparable接口,那么就必须在创建TreeMap对象的时候传入比较器。
----------------| Hashtable(了解) 底层也是依赖了哈希表实现的,也就是实现方式与HashMap是一致的,但是Hashtable是线程安全的,操作效率低。
Map接口的方法:
添加:
put(K key, V value)
putAll(Map<? extends K,? extends V> m)
删除
remove(Object key)
clear()
获取:
get(Object key)
size()
判断:
containsKey(Object key)
containsValue(Object value)
isEmpty()
package cn.itcast.map;import java.util.HashMap;import java.util.Map;/*在现实生活中有些数据是以映射关系存在的,也就是成对存在的,比如: 民政局 :键 值老公 老婆身份证 人一把钥匙 锁 双列集合:-------------| Map 如果是实现了Map接口的集合类,具备的特点: 存储的数据都是以键值对的形式存在的,键不可重复,值可以重复。----------------| HashMap ----------------| TreeMap----------------| Hashtable Map接口的方法: 添加: put(K key, V value) putAll(Map<? extends K,? extends V> m) 删除 remove(Object key) clear() 获取: get(Object key) size() 判断: containsKey(Object key) containsValue(Object value) isEmpty() */public class Demo2 {public static void main(String[] args) {Map<String,String> map = new HashMap<String, String>();//添加方法map.put("汪峰", "章子怡");map.put("文章", "马伊琍");map.put("谢霆锋","张柏芝");/*添加System.out.println("返回值:"+map.put("谢霆锋","黄菲")); // 如果之前没有存在该键,那么返回的是null,如果之前就已经存在该键了,那么就返回该键之前对应 的值。Map<String,String> map2 = new HashMap<String, String>();map2.put("杨振宁", "翁帆");map2.put("习总", "彭丽媛");map.putAll(map2); // 把map2的元素添加到map集合中。*//*删除System.out.println("删除的数据是:"+map.remove("汪峰")) ; //根据键删除一条map中的数据,返回的是该键对应 的值。map.clear(); //清空集合中的所有数据。*//* 获取System.out.println("根据指定 的键获取对应的值:"+ map.get("文章"));System.out.println("获取map集合键值对个数:"+map.size());判断System.out.println("判断map集合是否包含指定的键:"+ map.containsKey("文章"));System.out.println("判断map集合中是否包含指定 的值:"+ map.containsValue("张柏芝"));map.clear();System.out.println("判断map集合是否为空元素:"+ map.isEmpty());*/System.out.println("集合的元素:"+ map);}}
0 0
- Map 接口
- Map接口
- Map接口
- Map接口
- Map接口
- Map接口
- Map接口
- Map接口
- Map接口
- Map接口
- Map接口
- MAP接口
- Map接口
- Map接口
- Map接口
- Map接口
- Map接口
- Map接口
- L1-006. 连续因子
- 为什么SPP-Net无法fine-tune卷积层
- 求两个单链表的交点(可能带环)
- Linux centos 学习笔记 DAY2 目录与文件的权限意义
- 深网与暗网初学者指南
- Map接口
- C# 输入法
- 文章标题
- DB2调用 get_dbsize_info的时候,报错SQL0443N和SQL0572N:
- 2017.03.15
- CodeForces
- Java 之内部类
- 哈希表简介
- x64平台AT&T汇编实现快速排序函数