jni 创建 hashmap
时间: 2023-12-06 22:36:04 浏览: 192
根据提供的引用内容,没有直接与创建HashMap相关的信息。但是,我们可以使用JNI在C/C++中创建HashMap,并将其返回到Java中。下面是一个简单的示例:
首先,在C/C++中创建一个HashMap并将其返回到Java中,可以使用以下代码:
```c++
JNIEXPORT jobject JNICALL Java_MyClass_createHashMap(JNIEnv *env, jobject obj) {
// 创建HashMap类
jclass hashMapClass = env->FindClass("java/util/HashMap");
jmethodID hashMapConstructor = env->GetMethodID(hashMapClass, "<init>", "()V");
jobject hashMapObject = env->NewObject(hashMapClass, hashMapConstructor);
// 添加键值对
jmethodID putMethod = env->GetMethodID(hashMapClass, "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
jstring key = env->NewStringUTF("key");
jstring value = env->NewStringUTF("value");
env->CallObjectMethod(hashMapObject, putMethod, key, value);
return hashMapObject;
}
```
然后,在Java中调用此方法:
```java
public class MyClass {
static {
System.loadLibrary("mylibrary");
}
private native HashMap<String, String> createHashMap();
public static void main(String[] args) {
MyClass myClass = new MyClass();
HashMap<String, String> hashMap = myClass.createHashMap();
System.out.println(hashMap.get("key"));
}
}
```
这将输出“value”,因为我们在C/C++中将“key”和“value”添加到HashMap中。
阅读全文