java - TreeMap 作为一个泛型类
问题描述
我想从 Java Collections 学习 TreeMap 并使用泛型制作示例代码。
我的想法是制作您想要的任何类型的“有序列表”,(例如)员工按名称按字母顺序排序,整数是他们的 ID,或者学生按他们的 ID 排序,学生是自定义对象。
我需要一些帮助或指导来学习这个 Java 集合并解决这个问题。
我的通用类
public class GenericTreeMap<E1, E2> extends TreeMap<E1, E2>{
private E1 e1;
private E2 e2;
public GenericTreeMap(E1 e1, E2 e2) {
this.e1 = e1;
this.e2 = e2;
}
public void printTypes() {
System.out.println("Key type: " + e1.getClass().getName());
System.out.println("Value type: " + e2.getClass().getName());
}
}
主要的
Empleado e = new Empleado();
GenericTreeMap<Empleado, Integer> treeMap = new GenericTreeMap<>(e, "");
treeMap.put(new Empleado(1, 1500), "Ricardo");
treeMap.put(new Empleado(2, 1200), "Gerardo");
treeMap.put(new Empleado(3, 300), "Becario");
treeMap.put(new Empleado(4, 0), "Esclavo");
treeMap.values();
预期产出
密钥类型:员工
值类型:整数
编辑:我的代码没有按预期工作。
解决方案
使用列表,而不是地图。在您的元素类中实现Comparable,或实现Comparator,或将Comparator与流结合使用。地图是实现您需要的错误工具。
当然可以在TreeMap中保持元素的顺序。根据您需要的顺序,您可以实现Comparator并在创建TreeMap时提供它。但是处理它可能比使用List更复杂。
推荐阅读
- python - 如何从python中的列中获取完整的十进制值?
- oracle - 从 Databricks 连接到 Oracle
- tensorflow - 如何修复 ValueError: None 仅在第一维中受支持。张量“input_1”的形状无效“[None, None, None, 3]”
- reactjs - 首先我在我的组件中创建 Home.js 然后我尝试在我的主组件中呈现 Markdown
- uwp - 如何让 UWP 应用在任务栏上的图标更大更透明?
- javascript - Wait for request to be sent, but not response with Javascript promises
- r - Fit 2 Graphs Side By Side in Shiny Navbar Page Without Using box()
- python-3.x - python中正则表达式的使用
- flutter - main.dart 的 init 方法中的提供程序
- python - 关于 pycuda._driver.LogicError: cuMemcpyDtoH failed: invalid argument 的问题