gpt4 book ai didi

java - 在不同 map 上使用按键

转载 作者:行者123 更新时间:2023-12-01 22:51:25 25 4
gpt4 key购买 nike

在不同 map 上使用 key 是否会出现以下潜在问题。

Map<Key, Value> employeeBasicInfo= new HashMap<>(); 
Map<Key, Value> employeeDetailInfo = new HashMap<>();

....
//EDIT: Lets assume this is a unique key where every department has unique employee names.
String firstName = "John";
String lastName = "Smith";
String department = "IT";
Key employeeKey = new Key(firstName, lastName, department );

Value employeeBasicInfo = new Value(salary,grade,dateHired....);

Value employeeDetail = new Value(performanceEvaluation,benefit,familyInfo,...);

employeeBasicInfo.put(employeeKey, employeeBasicInfo);
employeeDetailInfo.put(employeeKey, employeeDetail);

注意:该 key 与 employeeBasicInfoemployeeDetailInfo

使用两次

假设上面的键是唯一的(同一部门中没有两个人的名字是 John Smith),这是否被认为是一种不好的编程实践,如果是,原因是什么?

谢谢!

最佳答案

一个关键点指向两条数据是可以的,但它的数据结构感觉不对——你必须维护两个单独的映射,如果其中一个映射中的数据发生变异,那么你就永远失去了 key .

您不应该改变 key ,但您可以做的是将它们存储在一个数据结构中:a Multimap 。它是 Guava 套件的一部分。

final Multimap<Key, Value> employeeInfo = ArrayListMultimap.create();
employeeInfo.put(employeeKey, employeeBasicInfo);
employeeInfo.put(employeeKey, employeeDetail);

这给你的(在某种意义上)相当于 Map<Key, Collection<Value>> ,并且由于您知道放置这些元素的顺序,因此检索非常简单。

Value basicInfo = ((List<Value) employeeInfo.get(employeeKey)).get(0);
Value detail = ((List<Value>) employeeInfo.get(employeeKey)).get(1);

你必须执行转换,因为 Collection没有 get(int index) 的概念.

关于java - 在不同 map 上使用按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24684677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com