我正在尝试创建一个HashMap,其中Key(int ID
)是通过找到前一个数字+ 1确定的。
我对java比较陌生,我在其他SO帖子上看到的例子似乎很混乱。
我的现有代码:
public class Office
{
private Map<Integer, Employee> employee = new HashMap<>();
/**
* Constructor for objects of class Office
*/
public Office()
{
employee = new HashMap<>();
}
public void addOffice(int ID, String Name, String JobTitle, int Age, int Salary)
{
Employee e = new Employee(ID, Name, JobTitle, Age, Salary);
employee.put(ID, e);
}
public int getID()
{
#find info
}
}
我正在寻找伪代码:
public int getID()
{
int i = 0;
if (Collections.sort(employee.Key[0] > 0))
{
i = (Collections.sort(employee.Key[0] > 0)
i = i + 1;
return
}
else
{
return 0
}
}
我已经在甲骨文网站上查看过,但不能说明问题。
谢谢, 萨姆
答案 0 :(得分:3)
如果您不需要删除员工,您可能只需使用一个列表:
public class Office
{
private final List<Employee> employees = new LinkedList<>(); //or ArrayList
public Office()
{
// do nothing
}
// FYI variables should start with a lowercase character
public void addOffice(String name, String jobTitle, int age, int salary)
{
Employee e = new Employee(employees.size(), name, jobTitle, age, salary);
employees.add(e);
}
}
答案 1 :(得分:-1)
如果您只需要一个唯一ID作为密钥,则可以使用系统时间戳,例如System.CurrentTimeMillis()
。或者您甚至可以通过调用java.util.UUID.randomUUID()
来使用随机生成的UIID。
如果你想要增量键,那么你必须创建一个方法,试图找到最大键值并递增它。 这是一个相关的问题: How to find highest key value from hashmap
如果您的类同时被多个线程使用,请注意线程安全。