📜  Java中的HashMap 类方法与示例|设置 1(put()、get()、isEmpty() 和 size())

📅  最后修改于: 2022-05-13 01:54:30.006000             🧑  作者: Mango

Java中的HashMap 类方法与示例|设置 1(put()、get()、isEmpty() 和 size())

HashMap 是一种数据结构,它使用哈希函数将标识值(称为键)映射到它们的关联值。它包含“键值”对,并允许通过键检索值。最令人印象深刻的功能是它可以快速查找元素,尤其是对于大编号。的元素。默认情况下它是不同步的,但我们可以通过调用来实现

Map myhash = Collections.synchronizedMap(hashMap);

在创建时,以防止对地图的意外不同步访问。

这些是各种重要的 hashmap 类方法。这篇文章解释了:put()、get()、isEmpty() 和 size()

  1. put(): Java.util.HashMap.put() 在将指定值与此映射中的指定键关联方面发挥作用。如果映射先前包含键的映射,则替换旧值。

    句法:

    public V put(K key,V value)
    Parameters:
    key - key with which the specified value is to be associated
    value - value to be associated with the specified key
    Return: the previous value associated with
    key, or null if there was no mapping for key. 
    
  2. get(): Java.util.HashMap.get() 方法返回指定键映射到的值,如果此映射不包含该键的映射,则返回 null。

    句法:

    public V get(Object key)
    Parameters:
    key - the key whose associated value is to be returned
    Return: the value to which the specified 
    key is mapped, or null if this map contains no mapping for
    the key.
    
  3. isEmpty():如果映射不包含键值映射,则Java.util.HashMap.isEmpty() 方法返回 true。

    句法:

    public boolean isEmpty()
    Return: true if this map contains no key-value mappings
    
  4. size(): Java.util.HashMap.size() 返回此映射中键值映射的数量。

    句法:

    public int size()
    Return: the number of key-value mappings in this map.
    

实现来说明上述方法

// Java program illustrating use of HashMap methods -
// put(), get(), isEmpty() and size()
import java.util.*;
public class NewClass
{
    public static void main(String args[])
    {
        // Creation of HashMap
        HashMap Geeks = new HashMap<>();
  
        // Adding values to HashMap as ("keys", "values")
        Geeks.put("Language", "Java");
        Geeks.put("Platform", "Geeks For geeks");
        Geeks.put("Code", "HashMap");
        Geeks.put("Learn", "More");
  
        System.out.println("Testing .isEmpty() method");
  
        // Checks whether the HashMap is empty or not
        // Not empty so printing the values
        if (!Geeks.isEmpty())
        {
            System.out.println("HashMap Geeks is notempty");
  
            // Accessing the contents of HashMap through Keys
            System.out.println("GEEKS : " + Geeks.get("Language"));
            System.out.println("GEEKS : " + Geeks.get("Platform"));
            System.out.println("GEEKS : " + Geeks.get("Code"));
            System.out.println("GEEKS : " + Geeks.get("Learn"));
  
            // size() method prints the size of HashMap.
            System.out.println("Size Of HashMap : " + Geeks.size());
        }
    }
}

输出

Testing .isEmpty() method
HashMap Geeks is notempty
GEEKS : Java
GEEKS : Geeks For geeks
GEEKS : HashMap
GEEKS : More
Size Of HashMap : 4

HashMap 和 TreeMap 有什么区别?

  1. HashMap 实现 Map 接口,而 TreeMap 实现 SortedMap 接口。 Sorted Map 接口是 Map 的子接口。
  2. HashMap 实现了 Hashing,而 TreeMap 实现了红黑树(一种自平衡二叉搜索树)。因此,哈希和平衡二叉搜索树之间的所有差异都适用于此。
  3. HashMap 和 TreeMap 都有对应的 HashSet 和 TreeSet。 HashSet 和 TreeSet 实现了 Set 接口。在 HashSet 和 TreeSet 中,我们只有 key,没有 value,这些主要用于查看集合中的存在/不存在。对于上述问题,我们不能使用 HashSet(或 TreeSet),因为我们不能存储计数。我们更喜欢 HashSet(或 TreeSet)而不是 HashMap(或 TreeMap)的一个示例问题是打印数组中的所有不同元素。

有关详细信息,请参阅 HashMap 和 TreeMap。

Java中的HashMap和HashTable有什么区别?

  • HashMap 是非同步的。它不是线程安全的,并且在没有适当的同步代码的情况下不能在多个线程之间共享,而 Hashtable 是同步的。它是线程安全的,可以与许多线程共享。
  • HashMap 允许一个空键和多个空值,而 Hashtable 不允许任何空键或空值。
  • 如果不需要线程同步,HashMap 通常优于 HashTable
  • HashMap 是 Hashtable 的高级版本和改进。 HashMap 是后来创建的。

详情请参考Java中 HashMap 和 HashTable 的区别。

HashMap 和 HashSet 有什么区别?

  • HashMap 存储键值对(例如,学生记录作为值,卷号作为键),而 HashSet 仅存储键(例如,如果是整数则为集合)。
  • HashSet 内部使用 HashMap 来存储键

有关详细信息,请参阅Java中的 HashSet。


Java中的Hashmap方法与示例|设置 2 (keySet(), values(), containsKey())

参考:
https://docs.oracle.com/javase/7/docs/api/java Java