以自定义的预定义顺序重新排列 HashMap 键

FJ *_*ior 4 java sorting hashmap

我有一个HashMap<String, String>我需要按特定顺序排序的。我了解 HashMaps,由于它们的构造方式,无法轻松排序。但是,我正在寻找重新排列 HashMap 中键的最佳策略 - 例如,我当前的 HashMap 如下所示:

"folioProperties": {
    "strategy": "Strategy",
    "summary": "Summary",
    "initiative": "Initiative",
    "deliveryMilestone": "Delivery Milestone",
    "onTarget": "On Target",
    "size": "Size",
    "driver": "Driver",
    "issueName": "Issue Name",
    "releaseWindow": "Release Window",
    "type": "Type",
    "targetQuarter": "Target Quarter"
}
Run Code Online (Sandbox Code Playgroud)

我有一个表视图,将这些属性中的每一个显示为列,我需要按Strategy, Initiative, Issue Name, Summary, Delivery Milestone, On Target, Size, Target Quarter, Driver, Type, Release Window.

任何建议,将不胜感激!

PS 在构造 HashMap 之前,键在List<String>.

DwB*_*DwB 5

您似乎不了解您要解决的问题。hashmap 是一种存储信息的工具。您似乎永远不需要对哈希图进行排序。相反,您似乎需要按特定顺序显示元素。

以下是按特定顺序从哈希图中检索元素的两种方法:

按所需顺序检索元素

blam = map.get("strategy");
... do something with blam.

blam = map.get("Initiative");
... do something with blam.

... repeat for all elements.
Run Code Online (Sandbox Code Playgroud)

对键进行排序,然后按顺序检索它们

keyList.addAll(map.keySet());
Collections.sort(keyList, yourComparator);
for (final String current : keyList)
{
    blam = map.get(current);
    ... do something with blam.
}
Run Code Online (Sandbox Code Playgroud)

停止将对象表示为 Map

构建一个类,可能名为 FolioProperties,表示 Folio 的属性。

public class FolioPropertiesFND
{
    private String initiative;
    private String strategy;
    ... one field per property.

    public String getInitiative()
    {
        return initiative;
    }

    public void setInitiative(final String newValue)
    {
        initiative = newValue;
    }
}
Run Code Online (Sandbox Code Playgroud)