博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java基础教程——Map
阅读量:4686 次
发布时间:2019-06-09

本文共 4085 字,大约阅读时间需要 13 分钟。

Map

1648799-20190713021033374-1694712417.png

返回类型 方法 描述
V get(Object key) 根据key取得value
V put(Obejct k,Object v) 向Map中加入(替换)元素,返回之前的Value;之前没有元素就返回null
V remove(Object key) 根据key删除元素,返回Value对应的value
void clear() 清空
int size() 获得集合的长度
boolean isEmpty() 判断是否为空
boolean containsKey(Object object) 判断指定的key是否存在
boolean containsValue(Object value) 判断指定的value是否存在
Set keySet() 所有key的集合
Collection values() 所有value

HashMap

存储K-V,使用key来区分。

import java.util.*;public class TestHashMap {    public static void main(String[] args) {        Map
map = new HashMap<>(); // 新k返回null,旧k返回旧v String put = map.put(1, "A"); System.out.println("之前没有此K的V:" + put); put = map.put(1, "B"); System.out.println("之前有同K的V:" + put); System.out.println(map); // get:有k返回v,无k返回null String v = map.get(2); System.out.println(v); v = map.get(1); System.out.println(v); // containsKey/containsValue boolean containsKey = map.containsKey(2); boolean containsValue = map.containsValue("B"); // remove:删k返回v;删无可删,返回null String remove = map.remove(2); System.out.println(remove); remove = map.remove(1); System.out.println(remove); }}

遍历:

package ah;import java.util.Collection;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;import java.util.Set;public class TestMap1Hash {    public static void main(String[] args) {        Map
_map = new HashMap
(); _map.put("1", "悟空"); _map.put(null, "白龙"); _map.put("2", "悟能"); _map.put("3", "悟净"); System.out.println("------foreach语法遍历map(输出K-V)------"); for (String _key : _map.keySet()) { System.out.print("key = " + _key); System.out.println(" value = " + _map.get(_key)); } System.out.println("------Java 8.forEach:Lambda------"); _map.forEach((k, v) -> System.out.println(k + ":" + v)); System.out.println("------使用迭代器迭代map(输出V)------"); // 1.获取值的Collection Collection
_values = _map.values(); // 2.通过Collection获得迭代器 Iterator
it = _values.iterator(); // 3.输出值 while (it.hasNext()) { String next = it.next(); System.out.println(next); } System.out.println("-----Map.Entry
-----"); // Map.Entry
是Map的内部接口,称为映射项(键-值对) Set
> entrySet = _map.entrySet(); System.out.println("=====Map.Entry
:for循环====="); for (Entry
entry : entrySet) { System.out.println(entry.getKey() + ":" + entry.getValue()); } System.out.println("=====Map.Entry
:迭代器====="); Iterator
> iterator = entrySet.iterator(); while (iterator.hasNext()) { Entry
next = iterator.next(); System.out.println(next.getKey() + ":" + next.getValue()); } }}

LinkedHashMap

自带链表(记录元素顺序),具有可预知的迭代顺序。


Hashtable (不接受null)

Hashtable是一个比较老的类,甚至没有遵循Java命名规范。尽量少用。

但是Hashtable有一个重要的子类——java.util.Properties。

public class Properties extends Hashtable
{...}

父以子贵,尽管Hashtable连命名都不规范,还是不会被淘汰。Properties类会在IO章节中介绍。


Hashtable是同步的,速度较慢。

两个map使用上是基本一致,但是Hashtable限制性更强一些,K和V都不接受null——

  • 不接受
  • 不提示
  • 运行时出错
// X  m.put(null, "NNN");// X  m.put("NNN", null);

HashMap对比Hashtable:

null键 null值 重复键
HashMap ×
Hashtable × × ×

JAVA 9:of方法

List接口、Set接口、Map接口里增加静态方法of,用于初始化集合。

集合元素个数不可变,添加新元素会抛出UnsupportedOperationException
of方法只适用于接口,不用于实现类。
Set、Map调用of方法时不能有重复的元素,如果重复会抛出IllegalArgumentException(不合法参数异常)

import java.util.*;public class TestJ9of {    public static void main(String[] args) {        List
lst = List.of("a", "b"); // lst.add("c");//UnsupportedOperationException System.out.println(lst); // lang.IllegalArgumentException: duplicate element: a Set
set = Set.of("a", "b"); // Set
set = Set.of("a", "b","a"); System.out.println(set); Map
map = Map.of(1, "A", 2, "B"); System.out.println(map); }}

转载于:https://www.cnblogs.com/tigerlion/p/11179212.html

你可能感兴趣的文章
我的第一篇博客
查看>>
大数据学习线路整理
查看>>
【C++算法与数据结构学习笔记------单链表实现多项式】
查看>>
关于ProjectServer定制化项目中心页面
查看>>
使用Collectd + InfluxDB + Grafana进行JMX监控
查看>>
Linux下tar,zip命令详解
查看>>
C#垃圾回收机制
查看>>
31、任务三十一——表单联动
查看>>
Jenkins之Linux和window配置区别
查看>>
python之hasattr、getattr和setattr函数
查看>>
maven使用阿里镜像配置文件
查看>>
iOS开发UI篇—UITableview控件使用小结
查看>>
lesson1 预备知识
查看>>
Copy code from eclipse to word, save syntax.
查看>>
arguments.callee的作用及替换方案
查看>>
23 Java学习之RandomAccessFile
查看>>
P2709 小B的询问
查看>>
润乾报表 动态控制文本的显示
查看>>
[oracle] 如何使用myBatis在数据库中插入数据并返回主键
查看>>
PHP echo 和 print 语句
查看>>