如何对HashMaps的ArrayList分别保存几个键值对?

Har*_*elm 14 java

我需要使用HashMaps的ArrayList调用外部API,每个包含几个预定义的键值对.一个例子:

ArrayList<HashMap<String, String>> arrayListHashMap = new ArrayList<HashMap<String, String>>();

    {
        HashMap hashMap = new HashMap<String, String>();
        hashMap.put("key", "A key");
        hashMap.put("value", "B value");
        arrayListHashMap.add(hashMap);
    }

    {
        HashMap hashMap = new HashMap<String, String>();
        hashMap.put("key", "B key");
        hashMap.put("value", "A value");
        arrayListHashMap.add(hashMap);
    }
Run Code Online (Sandbox Code Playgroud)

现在我需要在"value"键的内容上对此构造进行排序.这种排序会导致"key = B key/value = A value"条目成为arrayListHashMap中的第一个条目.

任何帮助都非常感谢.

HJW

Jon*_*eet 36

您需要实现一个Comparator<HashMap<String, String>>或多个通常Comparator<Map<String, String>>只提取与value键相关联的值,然后使用Collections.sort.示例代码(对要排序的任何键进行泛化):

class MapComparator implements Comparator<Map<String, String>>
{
    private final String key;

    public MapComparator(String key)
    {
        this.key = key;
    }

    public int compare(Map<String, String> first,
                       Map<String, String> second)
    {
        // TODO: Null checking, both for maps and values
        String firstValue = first.get(key);
        String secondValue = second.get(key);
        return firstValue.compareTo(secondValue);
    }
}

...
Collections.sort(arrayListHashMap, new MapComparator("value"));
Run Code Online (Sandbox Code Playgroud)