📜  Java中的通用映射

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

Java中的通用映射

Java Arrays 将项目存储在有序集合中 并且可以使用索引(整数)访问这些值。而 HashMap 存储为键/值对。使用 HashMap,我们可以存储项目或值,这些值可以通过任何类型的索引/键访问,无论是 Integer、String、Double、 字符还是任何用户定义的数据类型。

从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