当前位置: 首页 > 面试题库 >

HashMaps的ArrayList如何排序,每个ArrayList包含几个键值对?

涂选
2023-03-14
问题内容

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

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);
    }

现在,我需要根据“值”键的内容对该结构进行排序。这种排序将导致“ key = B键/值= A值”条目作为arrayListHashMap中的第一个条目。

非常感谢您的帮助。

J


问题答案:

您需要实现一个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"));


 类似资料:
  • 问题内容: 有什么方法可以检查一个集合是否包含一个或多个具有比使用contains循环两次更好的性能的值? 在其他意义上看起来像这样 问题答案: 循环的实现遍历每个元素并进行测试,因此调用两次 效率低下 。 您可以编写自己的循环,使用已编译的regex 模式同时检查两者,同时查找两个名称:

  • 问题内容: 我可能在这里找不到一个简单的单行代码,但这是我的问题: 如何检查ArrayList是否包含另一个ArrayList中的所有对象?我正在寻找(如果存在的话)类似的东西: 例如: 问题答案: 接口中有一个声明的方法。在您的设置中给出所需的答案。

  • 我检查了许多示例,但我不知道如何实现比较器或其他方法来解决我的问题。我试图清楚地解释我的问题。我有一个arrayList如下:我的Datamodel包括一个int作为id和一个String作为每个对象的名称; 我的第二个Arraylist还包括一个包含更多项的数据模型,但它还包括First Arraylist的值,如下所示: 现在我想根据firstArrayList(值顺序)对第二个arrayLi

  • 我在我的一个Java 15项目类中有一个ArrayList,它看起来如下所示: ArrayList包含字符串,其中每个元素是学生的姓名和他们的考试标记,中间有一个冒号。 目的是按照从低到高的顺序对此列表进行排序。要怎么做呢?

  • 我在我的一个Java 15项目类中有一个ArrayList,它看起来如下所示: ArrayList包含字符串,其中每个元素是学生的姓名和他们的考试标记,中间有一个冒号。 目的是按照从低到高的顺序对此列表进行排序。要怎么做呢?