当前位置: 首页 > news >正文

Map小结

嵌套类摘要
static interfaceMap.Entry<K,V>
          映射项(键-值对)。

 

方法摘要
 voidclear()
          从此映射中移除所有映射关系(可选操作)。
 booleancontainsKey(Object key)
          如果此映射包含指定键的映射关系,则返回 true
 booleancontainsValue(Object value)
          如果此映射将一个或多个键映射到指定值,则返回 true
 Set<Map.Entry<K,V>>entrySet()
          返回此映射中包含的映射关系的 Set 视图。
 booleanequals(Object o)
          比较指定的对象与此映射是否相等。
 Vget(Object key)
          返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null
 inthashCode()
          返回此映射的哈希码值。
 booleanisEmpty()
          如果此映射未包含键-值映射关系,则返回 true
 Set<K>keySet()
          返回此映射中包含的键的 Set 视图。
 Vput(K key, V value)
          将指定的值与此映射中的指定键关联(可选操作)。
 voidputAll(Map<? extends K,? extends V> m)
          从指定映射中将所有映射关系复制到此映射中(可选操作)。
 Vremove(Object key)
          如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
 intsize()
          返回此映射中的键-值映射关系数。
 Collection<V>values()
          返回此映射中包含的值的 Collection 视图。

   

方法详细信息

size

int size()
返回此映射中的键-值映射关系数。如果该映射包含的元素大于 Integer.MAX_VALUE,则返回 Integer.MAX_VALUE

返回:
此映射中的键-值映射关系数

isEmpty

boolean isEmpty()
如果此映射未包含键-值映射关系,则返回 true

返回:
如果此映射未包含键-值映射关系,则返回 true

containsKey

boolean containsKey(Object key)
如果此映射包含指定键的映射关系,则返回 true。更确切地讲,当且仅当此映射包含针对满足 (key==null ? k==null : key.equals(k)) 的键 k 的映射关系时,返回 true。(最多只能有一个这样的映射关系)。

参数:
key - 测试是否存在于此映射中的键
返回:
如果此映射包含指定键的映射关系,则返回 true
抛出:
ClassCastException - 如果该键对于此映射是不合适的类型(可选)
NullPointerException - 如果指定键为 null 并且此映射不允许 null 键(可选)

containsValue

boolean containsValue(Object value)
如果此映射将一个或多个键映射到指定值,则返回 true。更确切地讲,当且仅当此映射至少包含一个对满足 (value==null ? v==null : value.equals(v)) 的值 v 的映射关系时,返回 true。对于大多数 Map 接口的实现而言,此操作需要的时间可能与映射大小呈线性关系。

参数:
value - 测试是否存在于此映射中的值
返回:
如果此映射将一个或多个键映射到指定值,则返回 true
抛出:
ClassCastException - 如果该值对于此映射是不合适的类型(可选)
NullPointerException - 如果指定值为 null 并且此映射不允许 null 值(可选)

get

V get(Object key)
返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null

更确切地讲,如果此映射包含满足 (key==null ? k==null : key.equals(k)) 的键 k 到值 v 的映射关系,则此方法返回 v;否则返回 null。(最多只能有一个这样的映射关系)。

如果此映射允许 null 值,则返回 null 值并不一定 表示该映射不包含该键的映射关系;也可能该映射将该键显示地映射到 null。使用 containsKey 操作可区分这两种情况。

参数:
key - 要返回其关联值的键
返回:
指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null
抛出:
ClassCastException - 如果该键对于此映射是不合适的类型(可选)
NullPointerException - 如果指定键为 null 并且此映射不允许 null 键(可选)

put

V put(K key,
      V value)
将指定的值与此映射中的指定键关联(可选操作)。如果此映射以前包含一个该键的映射关系,则用指定值替换旧值(当且仅当 m.containsKey(k) 返回 true 时,才能说映射 m 包含键 k 的映射关系)。

参数:
key - 与指定值关联的键
value - 与指定键关联的值
返回:
以前与 key 关联的值,如果没有针对 key 的映射关系,则返回 null。(如果该实现支持 null 值,则返回 null 也可能表示此映射以前将 nullkey 关联)。
抛出:
UnsupportedOperationException - 如果此映射不支持 put 操作
ClassCastException - 如果指定键或值的类不允许将其存储在此映射中
NullPointerException - 如果指定键或值为 null,并且此映射不允许 null 键或值
IllegalArgumentException - 如果指定键或值的某些属性不允许将其存储在此映射中

remove

V remove(Object key)
如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。更确切地讲,如果此映射包含从满足 (key==null ? k==null :key.equals(k)) 的键 k 到值 v 的映射关系,则移除该映射关系。(该映射最多只能包含一个这样的映射关系。)

返回此映射中以前关联该键的值,如果此映射不包含该键的映射关系,则返回 null

如果此映射允许 null 值,则返回 null 值并不一定 表示该映射不包含该键的映射关系;也可能该映射将该键显示地映射到 null

调用返回后,此映射将不再包含指定键的映射关系。

参数:
key - 从映射中移除其映射关系的键
返回:
以前与 key 关联的值;如果没有 key 的映射关系,则返回 null
抛出:
UnsupportedOperationException - 如果此映射不支持 remove 操作
ClassCastException - 如果该键对于此映射是不合适的类型(可选)
NullPointerException - 如果指定键为 null 并且此映射不允许 null 键(可选)

putAll

void putAll(Map<? extends K,? extends V> m)
从指定映射中将所有映射关系复制到此映射中(可选操作)。对于指定映射中的每个键 k 到值 v 的映射关系,此调用等效于对此映射调用一次 put(k, v)。如果正在进行此操作的同时修改了指定的映射,则此操作的行为是不确定的。

参数:
m - 要存储在此映射中的映射关系
抛出:
UnsupportedOperationException - 如果此映射不支持 putAll 操作
ClassCastException - 如果指定映射中的键或值的类不允许将其存储在此映射中
NullPointerException - 如果指定映射为 null,或者此映射不允许 null 键或值,并且指定的映射包含 null 键或值
IllegalArgumentException - 如果指定映射中的键或值的某些属性不允许将其存储在此映射中

clear

void clear()
从此映射中移除所有映射关系(可选操作)。此调用返回后,该映射将为空。

抛出:
UnsupportedOperationException - 如果此映射不支持 clear 操作

keySet

Set<K> keySet()
返回此映射中包含的键的 Set 视图。该 set 受映射支持,所以对映射的更改可在此 set 中反映出来,反之亦然。如果对该 set 进行迭代的同时修改了映射(通过迭代器自己的 remove 操作除外),则迭代结果是不确定的。set 支持元素移除,通过 Iterator.removeSet.removeremoveAllretainAllclear 操作可从映射中移除相应的映射关系。它不支持 addaddAll 操作。

返回:
此映射中包含的键的 set 视图

values

Collection<V> values()
返回此映射中包含的值的 Collection 视图。该 collection 受映射支持,所以对映射的更改可在此 collection 中反映出来,反之亦然。如果对该 collection 进行迭代的同时修改了映射(通过迭代器自己的 remove 操作除外),则迭代结果是不确定的。collection 支持元素移除,通过 Iterator.removeCollection.removeremoveAllretainAllclear 操作可从映射中移除相应的映射关系。它不支持 addaddAll 操作。

返回:
此映射中包含的值的 collection 视图

entrySet

Set<Map.Entry<K,V>> entrySet()
返回此映射中包含的映射关系的 Set 视图。该 set 受映射支持,所以对映射的更改可在此 set 中反映出来,反之亦然。如果对该 set 进行迭代的同时修改了映射(通过迭代器自己的 remove 操作,或者通过对迭代器返回的映射项执行 setValue 操作除外),则迭代结果是不确定的。set 支持元素移除,通过 Iterator.removeSet.removeremoveAllretainAllclear 操作可从映射中移除相应的映射关系。它不支持 addaddAll 操作。

返回:
此映射中包含的映射关系的 set 视图

equals

boolean equals(Object o)
比较指定的对象与此映射是否相等。如果给定的对象也是一个映射,并且这两个映射表示相同的映射关系,则返回 true。更确切地讲,如果 m1.entrySet().equals(m2.entrySet()),则两个映射 m1m2 表示相同的映射关系。这可以确保 equals 方法在不同的 Map 接口实现间运行正常。

覆盖:
Object 中的 equals
参数:
o - 要与此映射进行相等性比较的对象
返回:
如果指定的对象等于此映射,则返回 true
另请参见:
Object.hashCode(), Hashtable

hashCode

int hashCode()
返回此映射的哈希码值。映射的哈希码定义为此映射 entrySet() 视图中每个项的哈希码之和。这确保 m1.equals(m2) 对于任意两个映射 m1m2 而言,都意味着 m1.hashCode()==m2.hashCode(),正如 Object.hashCode() 常规协定的要求。

覆盖:
Object 中的 hashCode
返回:

此映射的哈希码值

另请参见:
Map.Entry.hashCode(), Object.equals(Object), equals(Object)

具体实例:

/*
每个学生都有对应的归属地;
学生是student,归属地是String
学生的属性:姓名和年龄
保证学生的唯一性


1.描述学生
2.定义map容器,将学生作为键,地址作为值存入
3.获取map集合元素
*/
import java.util.*;
class maptest 
{
	public static void main(String[] args) 
	{
		Map<student,String> map = new HashMap<student,String>();//定义map容器,将学生作为键,地址作为值存入
		
		map.put(new student("a1",24),"xian");
		map.put(new student("a2",26),"beijing");
		map.put(new student("a1",24),"beijing");
		map.put(new student("a1",24),"xian");

		//第一种取出方法
		Set<student> keyset = map.keySet();
		for(Iterator<student> it = keyset.iterator();it.hasNext();)
		{
			student student = it.next();
			String address = map.get(student);
			sop(student+","+address);
		}
		//第二种取出方式
		Set<Map.Entry<student,String>> entryset = map.entrySet();
		for(Iterator<Map.Entry<student,String>> iter = entryset.iterator();iter.hasNext();)
		{
			Map.Entry<student,String> stu = iter.next();
			student student1 = stu.getKey();
			String address = stu.getValue();

			sop(student1+","+address);
		}
	}
	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
}
class student implements Comparable<student>//描述学生,可能存入二叉树,接入Comparable接口判断顺序
{
	private String name;
	private int age;
	student(String name,int age)
	{
		this.name = name;
		this.age = age;
	}
	public int compareTo(student s)//按姓名排序判断
	{
		int num = new Integer(this.age).compareTo(new Integer(s.age));
		if(num==0)
			return this.name.compareTo(s.name);
		return num;
	}
	public int hashCode()//有可能存到HashSet集合里,需要复写hasCode方法
	{
		return name.hashCode()+age*3;
	}
	public boolean equal(Object obj)
	{
		if(!(obj instanceof student))
			throw new ClassCastException("不是学生");//不是学生,抛出异常
		student s = (student)obj;
		return this.name.equals(s.name)&&this.age==s.age;
	}
	public String getName()
	{
		return name;
	}
	public int getAge()
	{
		return age;
	}
	public String toString()
	{
		return name+","+age;
	}
}


转载于:https://www.cnblogs.com/chaoyu/p/6436983.html

相关文章:

  • Android中实现app版本更新
  • linux内核优化
  • 媒体类型(MIME类型)
  • AngularJS指令开发(1)——参数详解
  • [安卓] 15、用NFC解锁手机并自动打开应用
  • Delphi、C#之父Anders Hejlsberg首次访华 推广TypeScript
  • JavaScript 数据类型
  • code
  • Service-stack.redis 使用PooledRedisClientManager 速度慢的原因之一
  • [Linux] - 定时任务crontab
  • 30分钟让你了解MongoDB基本操作(转)
  • There is already an open DataReader associated with this Command which must be closed first
  • 部署Exchange2013
  • Windows server 2008 R2配置路由和***
  • 业务
  • 【css3】浏览器内核及其兼容性
  • 08.Android之View事件问题
  • Apache Zeppelin在Apache Trafodion上的可视化
  • Gradle 5.0 正式版发布
  • hadoop集群管理系统搭建规划说明
  • Java IO学习笔记一
  • Python打包系统简单入门
  • 翻译:Hystrix - How To Use
  • 聊聊flink的BlobWriter
  • 用element的upload组件实现多图片上传和压缩
  • 白色的风信子
  • scrapy中间件源码分析及常用中间件大全
  • ​2021半年盘点,不想你错过的重磅新书
  • # 安徽锐锋科技IDMS系统简介
  • #pragma multi_compile #pragma shader_feature
  • #Z2294. 打印树的直径
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (C++)八皇后问题
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (六)c52学习之旅-独立按键
  • (六)激光线扫描-三维重建
  • (十一)手动添加用户和文件的特殊权限
  • (四)图像的%2线性拉伸
  • (算法设计与分析)第一章算法概述-习题
  • .java 9 找不到符号_java找不到符号
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .net core Swagger 过滤部分Api
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .NET企业级应用架构设计系列之结尾篇
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • .NET中使用Protobuffer 实现序列化和反序列化
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • /bin/bash^M: bad interpreter: No such file or directory
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • /var/spool/postfix/maildrop 下有大量文件