个性化阅读
专注于IT技术分析

Java HashMap类

Java HashMap类层次结构

Java HashMap类通过使用哈希表来实现map接口。它继承了AbstractMap类并实现Map接口。

要记住的要点

  • Java HashMap类包含基于键的值。
  • Java HashMap类仅包含唯一键。
  • Java HashMap类可以具有一个null键和多个null值。
  • Java HashMap类不同步。
  • Java HashMap类不维护任何顺序。
  • Java HashMap类的初始默认容量为16, 负载因子为0.75。

HashMap类的层次结构

如上图所示, HashMap类扩展了AbstractMap类并实现了Map接口。

HashMap类声明

我们来看一下java.util.HashMap类的声明。

public class HashMap<K, V> extends AbstractMap<K, V> implements Map<K, V>, Cloneable, Serializable

HashMap类参数

让我们看一下java.util.HashMap类的参数。

  • K:这是此地图维护的键的类型。
  • V:这是映射值的类型。

Java HashMap类的构造方法

建设者 描述
HashMap() 它用于构造默认的HashMap。
HashMap(Map <?扩展K , ?扩展V> m) 它用于通过使用给定Map对象m的元素来初始化哈希图。
HashMap(int capacity) 它用于将哈希映射的容量初始化为给定的整数值, 容量。
HashMap(int capacity, float loadFactor) 它用于通过使用其参数来初始化哈希图的容量和负载因子。

Java HashMap类的方法

方法 描述
void clear() 它用于从此映射中删除所有映射。
boolean isEmpty() 如果此映射不包含键值映射, 则用于返回true。
Object clone() 它用于返回此HashMap实例的浅表副本:键和值本身不会被克隆。
Set entrySet() 它用于返回此映射中包含的映射的集合视图。
Set keySet() 它用于返回此映射中包含的键的设置视图。
V put(Object key, Object value) 它用于在地图中插入一个条目。
void putAll(Map map) 用于在地图中插入指定的地图。
V putIfAbsent(K key, V value) 仅当尚未指定时, 才将指定值和指定键插入映射中。
V remove(Object key) 用于删除指定键的条目。
boolean remove(Object key, Object value) 它从映射中删除具有关联的指定键的指定值。
V计算(K键, BiFunction <?超级K , ?超级V , ?扩展V> remappingFunction) 它用于计算指定键及其当前映射值的映射(如果没有当前映射, 则为null)。
V computeIfAbsent(K键, Function <?超级K , ?扩展V> mappingFunction) 如果指定的键尚未与值关联(或映射为null), 则使用给定的映射函数来计算其值, 除非为null, 否则将其输入此映射。
VcomputeIfPresent(K键, BiFunction <?super K, ?super V, ?extended V> remappingFunction) 如果指定键的值存在且不为空, 则用于给定键及其当前映射值的情况下计算新映射。
boolean containsValue(Object value) 如果映射中存在等于该值的值, 则此方法返回true, 否则返回false。
boolean containsKey(Object key) 如果映射中存在等于该键的某个键, 则此方法返回true, 否则返回false。
boolean equals(Object o) 用于将指定的Object与Map进行比较。
void forEach(BiConsumer <?super K, ?super V>操作) 它对映射中的每个条目执行给定的操作, 直到所有条目都已处理或该操作引发异常为止。
V get(Object key) 此方法返回包含与键关联的值的对象。
V getOrDefault(Object key, V defaultValue) 它返回指定键映射到的值, 如果映射不包含键的映射, 则返回defaultValue。
boolean isEmpty() 如果映射为空, 则此方法返回true;否则, 返回false。如果包含至少一个密钥, 则返回false。
V merge(K键, V值, BiFunction <?super V, ?super V, ?extended V> remappingFunction) 如果指定的键尚未与值关联或与null关联, 请将其与给定的非null值关联。
V replace(K key, V value) 它将指定的值替换为指定的键。
boolean replace(K key, V oldValue, V newValue) 它用指定键的新值替换旧值。
void replaceAll(BiFunction <?super K, ?super V, ?extended V>函数) 它用在该条目上调用给定函数的结果替换每个条目的值, 直到处理完所有条目或该函数引发异常为止。
Collection<V> values() 它返回映射中包含的值的集合视图。
int size() 此方法返回映射中的条目数。

Java HashMap示例中的add()元素

在这里, 我们看到了插入元素的不同方法。

import java.util.*;
class HashMap1{
 public static void main(String args[]){
   HashMap<Integer, String> hm=new HashMap<Integer, String>();  
	System.out.println("Initial list of elements: "+hm);
	  hm.put(100, "Amit");  
	  hm.put(101, "Vijay");  
	  hm.put(102, "Rahul"); 
	 
	  System.out.println("After invoking put() method ");
	  for(Map.Entry m:hm.entrySet()){  
	   System.out.println(m.getKey()+" "+m.getValue());  
	  }
	  
	  hm.putIfAbsent(103, "Gaurav");
	  System.out.println("After invoking putIfAbsent() method ");
	  for(Map.Entry m:hm.entrySet()){  
		   System.out.println(m.getKey()+" "+m.getValue());  
		  }
	  HashMap<Integer, String> map=new HashMap<Integer, String>();
	  map.put(104, "Ravi");
	  map.putAll(hm);
	  System.out.println("After invoking putAll() method ");
	  for(Map.Entry m:map.entrySet()){  
		   System.out.println(m.getKey()+" "+m.getValue());  
		  }
 }
}
Initial list of elements: {}
After invoking put() method 
100 Amit
101 Vijay
102 Rahul
After invoking putIfAbsent() method 
100 Amit
101 Vijay
102 Rahul
103 Gaurav
After invoking putAll() method 
100 Amit
101 Vijay
102 Rahul
103 Gaurav
104 Ravi

Java HashMap示例, 以remove()元素

在这里, 我们看到了删除元素的不同方法。

import java.util.*;
public class HashMap2 {
   public static void main(String args[]) {
  	HashMap<Integer, String> map=new HashMap<Integer, String>();  	  
	  map.put(100, "Amit");  
	  map.put(101, "Vijay");  
	  map.put(102, "Rahul");
	  map.put(103, "Gaurav");
	System.out.println("Initial list of elements: "+map);
	//key-based removal
	map.remove(100);
	System.out.println("Updated list of elements: "+map);
	//value-based removal
	map.remove(101);
	System.out.println("Updated list of elements: "+map);
	//key-value pair based removal
	map.remove(102, "Rahul");
	System.out.println("Updated list of elements: "+map);
   }    
}

输出:

Initial list of elements: {100=Amit, 101=Vijay, 102=Rahul, 103=Gaurav}
Updated list of elements: {101=Vijay, 102=Rahul, 103=Gaurav}
Updated list of elements: {102=Rahul, 103=Gaurav}
Updated list of elements: {103=Gaurav}

Java HashMap示例替换()元素

在这里, 我们看到了替换元素的不同方法。

import java.util.*;
class HashMap3{
 public static void main(String args[]){
   HashMap<Integer, String> hm=new HashMap<Integer, String>();  
	  hm.put(100, "Amit");  
	  hm.put(101, "Vijay");  
	  hm.put(102, "Rahul"); 
	  System.out.println("Initial list of elements:");
	 for(Map.Entry m:hm.entrySet())
	 {
		System.out.println(m.getKey()+" "+m.getValue()); 
	 }
	 System.out.println("Updated list of elements:");
	 hm.replace(102, "Gaurav");
	 for(Map.Entry m:hm.entrySet())
	 {
		System.out.println(m.getKey()+" "+m.getValue()); 
	 }
	 System.out.println("Updated list of elements:");
	 hm.replace(101, "Vijay", "Ravi");
	 for(Map.Entry m:hm.entrySet())
	 {
		System.out.println(m.getKey()+" "+m.getValue()); 
	 } 
	 System.out.println("Updated list of elements:");
	 hm.replaceAll((k, v) -> "Ajay");
	 for(Map.Entry m:hm.entrySet())
	 {
		System.out.println(m.getKey()+" "+m.getValue()); 
	 }
 }
}
Initial list of elements:
100 Amit
101 Vijay
102 Rahul
Updated list of elements:
100 Amit
101 Vijay
102 Gaurav
Updated list of elements:
100 Amit
101 Ravi
102 Gaurav
Updated list of elements:
100 Ajay
101 Ajay
102 Ajay

HashSet和HashMap之间的区别

HashSet仅包含值, 而HashMap包含条目(键和值)。

Java HashMap示例:书籍

import java.util.*;  
class Book {  
int id;  
String name, author, publisher;  
int quantity;  
public Book(int id, String name, String author, String publisher, int quantity) {  
    this.id = id;  
    this.name = name;  
    this.author = author;  
    this.publisher = publisher;  
    this.quantity = quantity;  
}  
}  
public class MapExample {  
public static void main(String[] args) {  
    //Creating map of Books  
    Map<Integer, Book> map=new HashMap<Integer, Book>();  
    //Creating Books  
    Book b1=new Book(101, "Let us C", "Yashwant Kanetkar", "BPB", 8);  
    Book b2=new Book(102, "Data Communications & Networking", "Forouzan", "Mc Graw Hill", 4);  
    Book b3=new Book(103, "Operating System", "Galvin", "Wiley", 6);  
    //Adding Books to map 
    map.put(1, b1);
    map.put(2, b2);
    map.put(3, b3);
    
    //Traversing map
    for(Map.Entry<Integer, Book> entry:map.entrySet()){  
    	int key=entry.getKey();
    	Book b=entry.getValue();
        System.out.println(key+" Details:");
        System.out.println(b.id+" "+b.name+" "+b.author+" "+b.publisher+" "+b.quantity); 
    }  
}  
}

输出:

1 Details:
101 Let us C Yashwant Kanetkar BPB 8
2 Details:
102 Data Communications & Networking Forouzan Mc Graw Hill 4
3 Details:
103 Operating System Galvin Wiley 6
赞(0)
未经允许不得转载:srcmini » Java HashMap类

评论 抢沙发

评论前必须登录!