java如何使用stl
在Java中,STL(Standard Template Library)是C++的标准库,Java本身并不直接支持STL。但Java提供了类似的集合框架(Java Collections Framework),可以实现类似的功能。以下是Java中实现STL类似功能的方法:
使用Java集合框架
Java的java.util包提供了丰富的集合类,功能与STL类似。例如:

ArrayList对应C++的vectorLinkedList对应C++的listTreeSet和HashSet对应C++的setTreeMap和HashMap对应C++的map
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Hello");
list.add("World");
System.out.println(list);
}
}
使用第三方库
如果需要更接近STL的功能,可以使用第三方库如:

- Apache Commons Collections:提供了额外的集合类和工具。
- Google Guava:功能强大的工具库,包含集合、缓存、并发等工具。
import com.google.common.collect.Lists;
public class Main {
public static void main(String[] args) {
List<String> list = Lists.newArrayList("Hello", "World");
System.out.println(list);
}
}
使用JNI调用C++ STL
如果必须在Java中使用C++的STL,可以通过JNI(Java Native Interface)实现。这种方法需要编写C++代码并编译为动态库,然后在Java中调用。
- 编写C++代码(例如
NativeExample.cpp):#include <vector> #include <string> #include <iostream> #include "NativeExample.h"
JNIEXPORT void JNICALL Java_NativeExample_printVector(JNIEnv *env, jobject obj) { std::vector vec; vec.push_back("Hello"); vec.push_back("World"); for (const auto& str : vec) { std::cout << str << std::endl; } }
2. 编译为动态库并加载:
```java
public class NativeExample {
static {
System.loadLibrary("NativeExample");
}
public native void printVector();
public static void main(String[] args) {
new NativeExample().printVector();
}
}
总结
- Java的集合框架可以替代大部分STL功能。
- 第三方库如Guava提供了更多高级功能。
- 如果需要直接使用STL,可以通过JNI调用C++代码。






