Java中的通用映射
Java Arrays 将项目存储在有序集合中 并且可以使用索引(整数)访问这些值。而 HashMap 存储为键/值对。使用 HashMap,我们可以存储项目或值,这些值可以通过任何类型的索引/键访问,无论是 Integer、String、Double、 字符还是任何用户定义的数据类型。
The Mappings in a HashMap are from Key → Value
从Java 1.2 开始,HashMap 就是Java的一部分。它实现了Java.util.Map 接口。
什么是通用映射,它与术语 HashMap 有何不同?
通用术语 简单来说就是允许类型(整数、双精度、字符串等或任何用户定义的类型)作为方法、类或接口的参数。例如, Java中的所有内置集合,如 ArrayList 、 HashSet 、 HashMap 等使用泛型。
简单语言中的泛型 Map 可以概括为:
Map< K, V > map = new HashMap< K, V >();
其中K 和 V用于指定在 HashMap 声明中传递的泛型类型参数。我们可以添加任何类型,无论是 Integer、String、Float、 字符还是任何用户定义的类型 代替上面语法中的 K 和 V 来指定我们可以初始化我们想要的 HashMap。
例子:
假设如果键是String类型并且对应的值是Integer 类型,那么我们可以将其初始化为,
Map< String , Integer > map = new HashMap< String ,Integer >();
映射现在只能接受 String 实例作为键和 Integer 实例作为值。
访问通用映射
这可以通过使用 put() 和 get()函数来完成。
1.放置(): 用于向 Hashmap 添加新的键/值对。
2.获取(): 用于获取特定键对应的值。
示例:
Map< Integer, String > map = new HashMap<>();
// adding the key 123 and value
// corresponding to it as abc in the map
map.put( 123, "abc");
map.put(65, "a");
map.put(2554 , "GFG");
map.get(65);
输出:
a
迭代通用映射
地图有 迭代的两个集合。一个是keySet(),另一个是values()。
示例:使用 iterator() 方法
Map map = new HashMap<>;
//adding key, value pairs to the Map
// iterate keys.
Iterator key = map.keySet().iterator();
while(key.hasNext()){
Integer aKey = key.next();
String aValue = map.get(aKey);
}
Iterator value = map.values().iterator();
while(valueIterator.hasNext()){
String aString = value.next();
}
示例:使用新的 for 循环或 for-each 循环或通用 for 循环
Map map = new HashMap;
//adding key, value pairs to the Map
//using for-each loop
for(Integer key : map.keySet()) {
String value = map.get(key);
System.out.println("" + key + ":" + value);
}
for(String value : map.values()) {
System.out.println(value);
}
说明地图用法的Java程序
Java
// Java program to demonstrate
// Generic Map
import java.io.*;
import java.util.*;
class GenericMap {
public static void main(String[] args)
{
// create array of strings
String arr[]
= { "gfg", "code", "quiz", "program",
"code", "website", "quiz", "gfg",
"java", "gfg", "program" };
// to count the frequency of a string and store it
// in the map
Map map = new HashMap<>();
for (int i = 0; i < arr.length; i++) {
if (map.containsKey(arr[i])) {
int count = map.get(arr[i]);
map.put(arr[i], count + 1);
}
else {
map.put(arr[i], 1);
}
}
// to get and print the count of the mentioned
// string
System.out.println(map.get("gfg"));
System.out.println(map.get("code"));
}
}
3
2