我有Dictionary<int BossID, string BossName> ListOfBosses
和Dictionary<String EmpName, int BossID> ListOfEmps
。当然,将BossID与Boss匹配并返回'Dictionary WhoIsMyBoss'。
我不知道从哪里开始用Java。
就这两个名单而言,我们假设老板与英雄之间存在一对多的比例。并且BossID是从1-n增量的。
我想我会在我的文盲Java中做以下几点。 。
Dictionary<BossName, EmpName> WhoIsMyBoss;
ArrayList<Integer> AnotherListOfBosses;
private int Boss;
for (String EmpName: ListOfEmps)
Boss = ListOfEmps.get(EmpName)
WhoIsMyBoss.put(ListofBosses(Boss) , EmpName);
AnotherListOfBosses.add(Boss);
}
for(int Boss: AnotherListOfBosses)
{
ListOfBosses.remove(Boss)
}
那应该留给我一份老板和雇员名单和一份 希望没有相应员工的ListOfBosses。
这看起来怎么样? Dictionary是使用正确的集合吗?任何改进都将不胜感激。
答案 0 :(得分:1)
Dictionary
已过时,因此您应该使用某种Map
代替(通常是HashMap
)。此外,调用变量...List
是非常误导的,因为有一个非常常见的集合类型称为List
,它做了不同的事情(它表示排序,但不是映射),所以你应该打电话给你变量...map
也是如此。
由于一个老板可以拥有多名员工,因此映射应该是从员工到老板,而不是相反的方式(密钥总是先命名)。相应的put
也是错误的方式。
还有一些其他问题缺少声明和缺少get()
,但编译器应该直接在那里设置。
答案 1 :(得分:1)
非常感谢任何改进。
您需要了解标识符的Java样式规则。
static final
变量)名称全部为大写,下划线为名称分隔符。答案 2 :(得分:1)
正如Kilian Foth所提到的,你应该使用Map而不是Dictionary
。另外在Java中,惯例是使用小写和类名大写字母来启动变量名。
你说名字是字符串,ID是整数。
public class BossExample {
// Key: Boss-ID, Value: Boss name
private Map<Integer, String> mapOfBosses = new HashMap<Integer, String>();
// Key: Emp name, Value: Boss-ID
private Map<String, Integer> mapOfEmps = new HashMap<String, Integer>();
// Constructor fills the maps
public BossExample() {
// ...
}
// Returns a mapping from Emp name to Boss name
public Map<String, String> getEmpToBossMap() {
final Map<String, String> empToBossMap = new HashMap<String, String>();
// Iterate through mapOfEmps via entrySet giving you key and value
// at the same time
for(Map.Entry<String, Integer> empEntry : mapOfEmps.entrySet()) {
// Put the Emp name as key and the retrieved Boss name as a value into
// the result map.
empToBossMap.put(empEntry.getKey(), mapOfBosses.get(empEntry.getValue()));
}
return empToBossMap;
}
}