按密钥Java排序HashMap

时间:2017-04-25 10:26:02

标签: java

我正在尝试创建一个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 
      }
   }

我已经在甲骨文网站上查看过,但不能说明问题。

谢谢, 萨姆

2 个答案:

答案 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

如果您的类同时被多个线程使用,请注意线程安全。