集是一个集合,它可以快速地查找现有的元素。但是,要查看一个元素,需要有要查找元素的精确副本。这不是一种非常通用的查找方式,因为在集合中查找元素总是要遍历集合。通常,我们知道某些键的信息,并想要查找与之对应的元素。映射(map)数据结构就是为此而设计的。映射用来存放键/值对。如果提供了键,就能够查找到值。它们之间是一一对应关系。
基本映射操作:
Java类库为映射提供了两个通用的实现:HashMap和TreeMap,这两个类都实现了Map接口
散列映射(HashMap)对键进行散列,树映射(TreeMap)用键的整体顺序对元素进行排序,并将其组织成搜索树。
散列或比较函数只能作用于键。与键关联的值不不能进行散列或比较
与集一样,散列映射比树映射稍微快一些,所以在不需要按照排列顺序访问键的时候,最好选用散列映射
OP->>要进行键值存储,必须使用put方法
OP->>要进行键值访问,必须使用get方法,且只能通过键来访问到值
OP->>如果找不到值却不想返回一个空对象,则使用getOrDefault(var1,var2),如果找不到值则返回var2。
键必须是唯一的,如果对一对映射调用两次put方法,则后一次调用会覆盖前一次调用。并返回第一次调用的结果
OP->>要进行键值对的移除,则要使用remove(键)的方法
OP->>要想获取键值对的数量,则要使用size()方法
OP->>要迭代处理每个键和值,最好是使用forEach方法,可以向这个方法提供一个lambda表达式,用来依次处理映射中的每一个元素
类似于scores.forEach((k,v)->System.out.println("key="+k+",value="+v));
下面示例程序演示了映射的操作过程,首先将键/值对添加到映射中。然后从映射中删除一个键,同时与之对应的值也被删除了。接下来,修改与某一个键对应的值,并调用get方法查看这个值。最后,迭代处理条目集。
代码:
package Collection.Map; import java.util.*; public class MapTest { public static void main(String[] args) { Map<String,Employee> staff=new HashMap<>(); staff.put("144-25-5464", new Employee("Amy Lee")); staff.put("567-24-2546", new Employee("Harry Hacker")); staff.put("157-62-7935", new Employee("Gary Cooper")); staff.put("456-62-5527", new Employee("Francesca Cruz")); //打印所有成员 System.out.println(staff); //删除某一成员 staff.remove("567-24-2546"); //替代一个成员 staff.put("456-62-5527", new Employee("Francesca Miller")); //查看一个成员 System.out.println(staff.get("157-62-7935")); //遍历映射 staff.forEach((k,v)->System.out.println("key="+k+",value="+v)); } } class Employee{ String name; public Employee(String name) { this.name = name; } public String toString() { return "[name="+name+"]"; } }
运行结果:
下面是接口Map中常用的几个方法及其解释:
V get(Object key)
获取与键对应的值;返回与键对应的对象,如果在映射中没有这个对象则返回null。键可以为null。
default V getOrDefault(Object key,V defaultValue)
获得与键关联的值;返回与键关联的对象,或者如果未在映射中找到这个键,则返回defaultValue。
V put(K key,V value)
将键与对应的值关系插入到映射中。如果这个键已经存在,新的对象将取代与这个键对应的旧对象。这个方法将返回键对应的旧值。如果这个键以前没有出现过则返回null。键可以为null,但值不能为null。
void putAll(Map43e6c02aa1bd34f81e40b9476392bc95 entries)
将给定映射中所有条目添加到这个映射中。
boolean containsKey(Object key)
如果映射中已经有这个键,则返回true。
boolean containsValue(Object value)
如果映射中已经有这个值,返回true。
default void forEach(BiConsumer6dea1f83678c6d7b14ae4f1b5493627d action)
对这个映射中的所有键/值应用这个动作。
下面是HashMap类中的常用方法:
HashMap()
HashMap(int initialCapacity)
HashMap(int initialCapacity,float loadFactor)
用给定的容量和装填因子构造一个空散列映射(装填因子是一个0.0~1.0之间的一个数值。这个数值决定散列表填充百分比。一旦到了这个比例,就要将其再散列到更大的表中)。默认的装填因子是0.75。
下面是TreeMap类中常用的方法:
TreeMap()
为实现Comparable接口的键构造一个空的树映射。
TreeMap(Comparatore3882fcc260fc32c6b751547559600d3 c)
构造一个树映射,并使用一个指定的比较器对键进行排序。
TreeMap(Map43e6c02aa1bd34f81e40b9476392bc95 entries)
构造一个树映射,并将某个映射中的所有条目添加到树映射中。
TreeMap(SortedMap43e6c02aa1bd34f81e40b9476392bc95 entries)
构造一个树映射,将某个有序映射中的所有条目添加到树映射中,并使用与给定的有序映射相同的比较器。
下面是SortedMap接口的一些重要的方法:
Comparatore3882fcc260fc32c6b751547559600d3 comparator()
返回键进行排序的比较器。如果键是用Comparable接口的comparaTo方法进行比较的,返回null。
K firstKey()
K lastKey()
返回映射中最小元素和最大元素。
php中文网,大量的免费Java入门教程,欢迎在线学习!
以上是java什么是映射的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境