• 技术文章 >Java >Java入门

    java什么是映射

    爱喝马黛茶的安东尼爱喝马黛茶的安东尼2019-11-12 16:57:12原创9060

    集是一个集合,它可以快速地查找现有的元素。但是,要查看一个元素,需要有要查找元素的精确副本。这不是一种非常通用的查找方式,因为在集合中查找元素总是要遍历集合。通常,我们知道某些键的信息,并想要查找与之对应的元素。映射(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+"]";
    }
    }

    运行结果:

    1573548741820926.jpg

    下面是接口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(Map<? extends K,? extends V> entries)

    将给定映射中所有条目添加到这个映射中。

    boolean containsKey(Object key)

    如果映射中已经有这个键,则返回true。

    boolean containsValue(Object value)

    如果映射中已经有这个值,返回true。

    default void forEach(BiConsumer<? super K,? super V> action)

    对这个映射中的所有键/值应用这个动作。

    下面是HashMap类中的常用方法:

    HashMap()

    HashMap(int initialCapacity)

    HashMap(int initialCapacity,float loadFactor)

    用给定的容量和装填因子构造一个空散列映射(装填因子是一个0.0~1.0之间的一个数值。这个数值决定散列表填充百分比。一旦到了这个比例,就要将其再散列到更大的表中)。默认的装填因子是0.75。

    下面是TreeMap类中常用的方法:

    TreeMap()

    为实现Comparable接口的键构造一个空的树映射。

    TreeMap(Comparator<? super K> c)

    构造一个树映射,并使用一个指定的比较器对键进行排序。

    TreeMap(Map<? extends K,? extends V> entries)

    构造一个树映射,并将某个映射中的所有条目添加到树映射中。

    TreeMap(SortedMap<? extends K,? extends V> entries)

    构造一个树映射,将某个有序映射中的所有条目添加到树映射中,并使用与给定的有序映射相同的比较器。

    下面是SortedMap接口的一些重要的方法:

    Comparator<? super K> comparator()

    返回键进行排序的比较器。如果键是用Comparable接口的comparaTo方法进行比较的,返回null。

    K firstKey()

    K lastKey()

    返回映射中最小元素和最大元素。

    php中文网,大量的免费Java入门教程,欢迎在线学习!

    以上就是java什么是映射的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:java 映射
    上一篇:java数组如何初始化 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • hashmap的扩容机制是什么• java中string是什么意思• java中void是什么意思• java接口的修饰符可以是什么• java实现插入排序后怎么进一步优化
    1/1

    PHP中文网