我需要使用一个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包含字符串,其中每个元素是学生的姓名和他们的考试标记,中间有一个冒号。 目的是按照从低到高的顺序对此列表进行排序。要怎么做呢?