ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021-04-03

2021-04-03 09:33:02  阅读:114  来源: 互联网

标签:返回 03 映射 04 map 指定 2021 key null


java之map用法

java.util 中的集合类包含 Java 中某些最常用的类。 最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形,其中的数据有顺序且可以重复。而Set中数据无顺序且不可以重复。
Collection容器中包含Set和List接口,Set中又包含HashSet,List中包含LinkedList和ArrayList;单独的Map接口中只有HashMap。
Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。 从概念上而言,您可以将 List 看作是具有数值键的 Map。 而实际上,除了 List 和 Map 都在定义 java.util 中外,两者并没有直接的联系。本文将着重介绍Map.

map

1: size
int size()返回此映射中的键-值映射关系数。如果该映射包含的元素大于 Integer.MAX_VALUE,则返回 Integer.MAX_VALUE。
返回:
此映射中的键-值映射关系数
2: isEmpty
boolean isEmpty()如果此映射未包含键-值映射关系,则返回 true。
返回:
如果此映射未包含键-值映射关系,则返回 true
3: containsKey
boolean containsKey(Object key)如果此映射包含指定键的映射关系,则返回 true。更确切地讲,当且仅当此映射包含针对满足 (keynull ? knull : key.equals(k)) 的键 k 的映射关系时,返回 true。(最多只能有一个这样的映射关系)。
参数:
key - 测试是否存在于此映射中的键
返回:
如果此映射包含指定键的映射关系,则返回 true
抛出:
ClassCastException - 如果该键对于此映射是不合适的类型(可选)
NullPointerException - 如果指定键为 null 并且此映射不允许 null 键(可选)
4: containsValue
boolean containsValue(Object value)如果此映射将一个或多个键映射到指定值,则返回 true。更确切地讲,当且仅当此映射至少包含一个对满足 (valuenull ? vnull : value.equals(v)) 的值 v 的映射关系时,返回 true。对于大多数 Map 接口的实现而言,此操作需要的时间可能与映射大小呈线性关系。
参数:
value - 测试是否存在于此映射中的值
返回:
如果此映射将一个或多个键映射到指定值,则返回 true
抛出:
ClassCastException - 如果该值对于此映射是不合适的类型(可选)
NullPointerException - 如果指定值为 null 并且此映射不允许 null 值(可选)
5: get
V get(Object key)返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
更确切地讲,如果此映射包含满足 (keynull ? knull : key.equals(k)) 的键 k 到值 v 的映射关系,则此方法返回 v;否则返回 null。(最多只能有一个这样的映射关系)。
如果此映射允许 null 值,则返回 null 值并不一定 表示该映射不包含该键的映射关系;也可能该映射将该键显示地映射到 null。使用 containsKey 操作可区分这两种情况。
参数:
key - 要返回其关联值的键
返回:
指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null
抛出:
ClassCastException - 如果该键对于此映射是不合适的类型(可选)
NullPointerException - 如果指定键为 null 并且此映射不允许 null 键(可选)
6: put
V put(K key,
V value)将指定的值与此映射中的指定键关联(可选操作)。如果此映射以前包含一个该键的映射关系,则用指定值替换旧值(当且仅当 m.containsKey(k) 返回 true 时,才能说映射 m 包含键 k 的映射关系)。
参数:
key - 与指定值关联的键
value - 与指定键关联的值
返回:
以前与 key 关联的值,如果没有针对 key 的映射关系,则返回 null。(如果该实现支持 null 值,则返回 null 也可能表示此映射以前将 null 与 key 关联)。
抛出:
UnsupportedOperationException - 如果此映射不支持 put 操作
ClassCastException - 如果指定键或值的类不允许将其存储在此映射中
NullPointerException - 如果指定键或值为 null,并且此映射不允许 null 键或值
IllegalArgumentException - 如果指定键或值的某些属性不允许将其存储在此映射中
7: remove
V remove(Object key)如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。更确切地讲,如果此映射包含从满足 (keynull ? knull :key.equals(k)) 的键 k 到值 v 的映射关系,则移除该映射关系。(该映射最多只能包含一个这样的映射关系。)
返回此映射中以前关联该键的值,如果此映射不包含该键的映射关系,则返回 null。
如果此映射允许 null 值,则返回 null 值并不一定 表示该映射不包含该键的映射关系;也可能该映射将该键显示地映射到 null。
调用返回后,此映射将不再包含指定键的映射关系。
参数:
key - 从映射中移除其映射关系的键
返回:
以前与 key 关联的值;如果没有 key 的映射关系,则返回 null。
抛出:
UnsupportedOperationException - 如果此映射不支持 remove 操作
ClassCastException - 如果该键对于此映射是不合适的类型(可选)
NullPointerException - 如果指定键为 null 并且此映射不允许 null 键(可选)
8: putAll
void putAll(Map<? extends K,? extends V> m)从指定映射中将所有映射关系复制到此映射中(可选操作)。对于指定映射中的每个键 k 到值 v 的映射关系,此调用等效于对此映射调用一次 put(k, v)。如果正在进行此操作的同时修改了指定的映射,则此操作的行为是不确定的。
参数:
m - 要存储在此映射中的映射关系
抛出:
UnsupportedOperationException - 如果此映射不支持 putAll 操作
ClassCastException - 如果指定映射中的键或值的类不允许将其存储在此映射中
NullPointerException - 如果指定映射为 null,或者此映射不允许 null 键或值,并且指定的映射包含 null 键或值
IllegalArgumentException - 如果指定映射中的键或值的某些属性不允许将其存储在此映射中
9: clear
void clear()从此映射中移除所有映射关系(可选操作)。此调用返回后,该映射将为空。
抛出:
UnsupportedOperationException - 如果此映射不支持 clear 操作
10: keySet
Set keySet()返回此映射中包含的键的 Set 视图。该 set 受映射支持,所以对映射的更改可在此 set 中反映出来,反之亦然。如果对该 set 进行迭代的同时修改了映射(通过迭代器自己的 remove 操作除外),则迭代结果是不确定的。set 支持元素移除,通过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作可从映射中移除相应的映射关系。它不支持 add 或 addAll 操作。
返回:
此映射中包含的键的 set 视图
11: values
Collection values()返回此映射中包含的值的 Collection 视图。该 collection 受映射支持,所以对映射的更改可在此 collection 中反映出来,反之亦然。如果对该 collection 进行迭代的同时修改了映射(通过迭代器自己的 remove 操作除外),则迭代结果是不确定的。collection 支持元素移除,通过 Iterator.remove、Collection.remove、removeAll、retainAll 和 clear 操作可从映射中移除相应的映射关系。它不支持 add 或 addAll 操作。
返回:
此映射中包含的值的 collection 视图
12: equals
boolean equals(Object o)比较指定的对象与此映射是否相等。如果给定的对象也是一个映射,并且这两个映射表示相同的映射关系,则返回 true。更确切地讲,如果 m1.entrySet().equals(m2.entrySet()),则两个映射 m1 和 m2 表示相同的映射关系。这可以确保 equals 方法在不同的 Map 接口实现间运行正常。
覆盖:
类 Object 中的 equals
参数:
o - 要与此映射进行相等性比较的对象
返回:
如果指定的对象等于此映射,则返回 true
另请参见:
Object.hashCode(), Hashtable
13: hashCode
int hashCode()返回此映射的哈希码值。映射的哈希码定义为此映射 entrySet() 视图中每个项的哈希码之和。这确保 m1.equals(m2) 对于任意两个映射 m1 和 m2 而言,都意味着 m1.hashCode()==m2.hashCode(),正如 Object.hashCode() 常规协定的要求。
覆盖:
类 Object 中的 hashCode
返回:
此映射的哈希码值
另请参见:
Map.Entry.hashCode(), Object.equals(Object), equals(Object)
14:entrySet
Set<Map.Entry<K,V>> entrySet()返回此映射中包含的映射关系的 Set 视图。该 set 受映射支持,所以对映射的更改可在此 set 中反映出来,反之亦然。如果对该 set 进行迭代的同时修改了映射(通过迭代器自己的 remove 操作,或者通过对迭代器返回的映射项执行 setValue 操作除外),则迭代结果是不确定的。set 支持元素移除,通过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作可从映射中移除相应的映射关系。它不支持 add 或 addAll 操作。
返回:
此映射中包含的映射关系的 set 视图

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner cin = new Scanner(System.in);
		Map<Integer, String> map = new HashMap<Integer, String>();
		System.out.println("2:"+map.isEmpty());
		map.put(1, "lili");
		map.put(2, "nana");
		map.put(3, "www");
		System.out.println("5:"+map.get(4));
		System.out.println("5:"+map.get(3));
		map.put(4, "love");
		System.out.println("1:"+map.size());
		System.out.println("3:"+map.containsKey(2));
		System.out.println("4:"+map.containsValue("love"));
		map.remove(2);
		System.out.println("2:"+map.size());
		Set<Integer> set = map.keySet();
		Iterator<Integer> it1 = set.iterator();
		System.out.println("全部的key: ");
		while(it1.hasNext()){
			int t = it1.next();
			System.out.println(t);
		}
		
		System.out.println("全部的value: ");
		Collection<String> collection = map.values();
		Iterator<String> it2 = collection.iterator();
		while(it2.hasNext()){
			String ss = it2.next();
			System.out.println(ss);
		}
		cin.close();
	}

}

运行结果:

2:true
5:null
5:www
1:4
3:true
4:true
2:3
全部的key: 
1
3
4
全部的value: 
lili
www
love

标签:返回,03,映射,04,map,指定,2021,key,null
来源: https://blog.csdn.net/weixin_51304175/article/details/115411511

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有