Java 将ID列表与其对应的对象相匹配
我有一个Java 将ID列表与其对应的对象相匹配,java,dictionary,arraylist,Java,Dictionary,Arraylist,我有一个字典中的单词列表和字典中的单词列表。当然,将BossID与Boss匹配并返回“Dictionary WhoIsMyBoss” 我不知道从哪里开始用Java 就这两个列表而言,我们假设老板与EMP的比例为一比多。BOSSID是从1-n递增的 我想我会用我不识字的Java做以下事情 Dictionary<BossName, EmpName> WhoIsMyBoss; ArrayList<Integer> AnotherListOfBosses; private int
字典中的单词列表
和字典中的单词列表
。当然,将BossID与Boss匹配并返回“Dictionary WhoIsMyBoss”
我不知道从哪里开始用Java
就这两个列表而言,我们假设老板与EMP的比例为一比多。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)
}
WhoIsMyBoss字典;
ArrayList另一个Boss列表;
私人内特老板;
for(字符串EmpName:ListOfEmps)
Boss=ListOfEmps.get(EmpName)
WhoIsMyBoss.put(Boss(Boss)列表,EmpName);
另一个Boss列表。添加(Boss);
}
对于(int Boss:另一个Boss列表)
{
Boss列表。移除(Boss)
}
这应该会给我留下一份老板和员工的名单以及
一个没有相应员工的博客列表
看起来怎么样?字典是正确的收藏吗?任何改进都将不胜感激。
字典
已经过时,因此您应该使用某种映射
(通常是哈希映射
)。此外,调用变量…List
会产生很大的误导,因为有一种非常常见的集合类型称为List
,并且它会做一些不同的事情(它表示排序,但不表示映射),所以您可能也应该调用变量…map
因为一个老板可以有几个员工,所以映射应该是从一个员工到另一个老板,而不是从另一个员工到另一个老板(密钥总是先命名)。相应的put
也是错误的方式
缺少声明和缺少的
get()
也存在一些其他问题,但是编译器应该直接解决这些问题。字典
已经过时,因此您应该使用某种映射
(通常是哈希映射
)。此外,调用变量…List
会产生很大的误导,因为有一种非常常见的集合类型称为List
,并且它会做一些不同的事情(它表示排序,但不表示映射),所以您可能也应该调用变量…map
因为一个老板可以有几个员工,所以映射应该是从一个员工到另一个老板,而不是从另一个员工到另一个老板(密钥总是先命名)。相应的put
也是错误的方式
缺少声明和一个缺少的get()
,还有一些其他问题,但是编译器应该在这方面为您提供帮助
如有任何改进,将不胜感激
您需要学习标识符的Java风格规则
- 类名是以大写字符开头的大小写
- 方法名称以及变量、参数和属性的名称以小写字符开头
- 包名称都是小写的
- 常量(例如,
变量)名称均为大写,并以下划线作为名称分隔符静态final
- 类名是以大写字符开头的大小写
- 方法名称以及变量、参数和属性的名称以小写字符开头
- 包名称都是小写的
- 常量(例如,
变量)名称均为大写,并以下划线作为名称分隔符静态final
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;
}
}
公共类BossExample{
//键:Boss ID,值:Boss name
private Map MapOfBoss=新HashMap();
//键:Emp名称,值:Boss ID
私有映射mapOfEmps=newhashmap();
//构造函数填充映射
公共BossExample(){
// ...
}
//返回从Emp名称到Boss名称的映射
公共映射getEmpToBossMap(){
最终映射empToBossMap=newhashmap();
//通过提供键和值的entrySet在mapOfEmps中迭代
//同时
对于(Map.Entry-empEntry:mapOfEmps.entrySet()){
//将Emp名称作为键,将检索到的Boss名称作为值放入
//结果图。
empToBossMap.put(empEntry.getKey(),mapofBoss.get(empEntry.getValue());
}
返回empToBossMap;
}
}
正如Kilian Foth所提到的,你应该使用地图而不是字典。此外,在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;
}
}
公共类BossExample{
//键:Boss ID,值:Boss name
private Map MapOfBoss=新HashMap();
//键:Emp名称,值:Boss ID
私有映射mapOfEmps=newhashmap();
//构造函数填充映射
公共BossExample(){
// ...
}
//返回从Emp名称到Boss名称的映射
公共映射getEmpToBossMap(){
最终映射empToBossMap=newhashmap();
//通过提供键和值的entrySet在mapOfEmps中迭代
//同时
对于(Map.Entry-empEntry:mapOfEmps.entrySet()){
//将Emp名称作为键,将检索到的Boss名称作为值放入
//结果图。
empToBossMap.put(empEntry.getKey(),mapofBoss.get(empEntry.getValue());
}
返回empToBossMap;
}
}
我猜你指的是地图,而不是surfasb从老板到员工的地图。太棒了。当我开始在Eclipse中输入字典并开始阅读工具提示时,我注意到了它。不过,我应该能够弄清楚这些声明。是的,那些不是真名。我只是把它们放在那里,让它变得更美