【问题标题】:HashMap Sorting based on employeeID [closed]基于employeeID的HashMap排序[关闭]
【发布时间】:2016-08-21 20:26:46
【问题描述】:

您有一个 Hashmap,其中存储有关员工姓名及其员工 ID 的信息。现在您要对员工进行排序。 编写一个程序,将 Hashmap 作为输入,返回员工 ID 的排序列表

员工 ID 可以是字母数字。排序需要按降序进行。

给定

public class solution{
    /*...Complete the function below ...*/

    Static ArrayList<String> orderByEmployeeID(HashMap<string,String> employeeMap) {

    }
}  ⁠ ⁠

【问题讨论】:

  • 这听起来像是你的功课。
  • 到目前为止你尝试了什么?
  • A Map 无法保证订购...您在这里会有些失望。
  • @fge 实际上,Java API 中的一些 Map 实现确实提供了排序/导航能力,无论是通过键比较器还是通过插入顺序。
  • @hexafraction 是的,但无论如何这不是Map 的一般合同。是的,你有SortedMapNavigableMap

标签: java sorting hashmap


【解决方案1】:

我们不会在这里为您做作业。但也许这些要点会帮助你弄清楚。考虑以下几点:

1) 你在处理什么样的HashMap? “存储有关员工姓名及其员工 ID 信息的 Hashmap ......员工 ID 可以是字母数字”。 HashMaps 是键值对。哪个字段是关键:ID 还是名称?如果 ID 是字母数字,那么 ID 是什么类型的变量?

2) 获取该 ID 并将其放入您将返回的 List。您已获得ArrayList 作为您方法的返回类型。这种类型的List 不是自然排序的,因此在将它们添加到List 之前,您必须自己在方法主体中对IDS 进行排序。您将如何对字母数字的 ID 变量进行排序?有内置的方法。如果您不确定可以使用哪些方法,请查看 Java 的文档。

【讨论】:

  • @Zicron,感谢您的回答。其实是面试题。我试图以此作为参考。 HashMap
  • 使用ComparatorHashMap 进行排序通常是一个好主意,但它对您的场景来说毫无意义,因为您需要返回ArrayList。您最好从地图中检索 id,然后先添加它们并对 List 进行排序,或者只是对它们进行排序,然后将它们添加到 List
  • 感谢您的建议。这真的很有用。我在列表中添加了映射键集并使用了 Collections.sort(list)。
猜你喜欢
  • 2019-12-08
  • 1970-01-01
  • 1970-01-01
  • 2012-09-18
  • 2020-08-23
  • 1970-01-01
  • 1970-01-01
  • 2012-06-26
  • 1970-01-01
相关资源
最近更新 更多