Java 对 List<Value> 的 HashMap 值进行排序

标签 java sorting hashmap comparator

我得到了HashMap:

HashMap<String, List<Value>> facetsInCategories = new HashMap<>();

我需要对此 HashMap 的值内的值列表进行排序。列表中的值有四个字段,我需要按“translatedValue”字符串对列表进行排序。这就是为什么我将“getTranslatedValue”放入自定义比较器中。这是值对象字段:

public String name;
public int count;
private String translatedValue;
private String translation;

这是我尝试过的:

for (List<Value> value : facetsInCategories.values()) {
    Collections.sort(value, new Comparator<Value>() {
            @Override
            public int compare(Value o1, Value o2) {
                return o1.getTranslatedValue().compareTo(o2.getTranslatedValue());
            }
    });
}

我已经这样做了几个小时了,所以我想你可以就此提出一些建议。

最佳答案

代码看起来不错。 Collections.sort 将对列表进行排序。

为什么需要这条线?

facetsInCategories.put("test", value);

列表已添加到 HashMap 中。它们将按原地排序。

从空安全的角度来看,您假设这永远不会为空:

o1.getTranslatedValue()

关于Java 对 List<Value> 的 HashMap 值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26403936/

相关文章:

java - 通过 HTTP 从 android 应用程序发送到 nodejs 服务器后,我的 JSON 看起来不同

java - Java 如何接受我的自签名证书而无需将其添加到 Java 信任库

java - jade.Boot 类未找到 ubuntu10.10

python - 访问排序嵌套列表的第一个元素以获取第二小的第二个元素

java - 如何组合包含相同类型的两个 HashMap 对象?

java - 包含来自另一个项目的包 Spring boot gradle Intellij

c++使用带有自定义类对象的列表容器,list::sort函数实际上并不对我的数据进行排序

string - 按字母顺序对字符串中的字母进行排序 - SAS

hashmap - 从 HashMap 获取第一个元素

c++ - 在 C++ 中的 unordered_map 中查找最大键