Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用字符串键对地图进行排序?比如(1个foo,2个foo)_Java_Sorting_Dictionary - Fatal编程技术网

Java 如何使用字符串键对地图进行排序?比如(1个foo,2个foo)

Java 如何使用字符串键对地图进行排序?比如(1个foo,2个foo),java,sorting,dictionary,Java,Sorting,Dictionary,“我正在使用hibernate,我计划使用LinkedHashMap对元素进行排序, 但它不起作用,因为我无法初始化,所以我从控制器进行排序,所以它起作用,但不太好,这是我的排序方法 public LinkedHashMap<String, Indicador> OrdenarMap(Map<String, Indicador> map) { LinkedHashMap<String, Indicador> sortedMap = new L

“我正在使用hibernate,我计划使用
LinkedHashMap
对元素进行排序, 但它不起作用,因为我无法初始化,所以我从控制器进行排序,所以它起作用,但不太好,这是我的排序方法

public LinkedHashMap<String, Indicador> OrdenarMap(Map<String, Indicador> map) {

        LinkedHashMap<String, Indicador> sortedMap = new LinkedHashMap<>();

        map.entrySet()
                .stream()
                .sorted(Map.Entry.comparingByKey())
                .forEachOrdered(x -> sortedMap.put(x.getKey(), x.getValue()));

        return sortedMap;
    }
public LinkedHashMap或enarmap(地图地图){
LinkedHashMap sortedMap=新LinkedHashMap();
map.entrySet()
.stream()
.sorted(Map.Entry.comparingByKey())
.forEachOrdered(x->sortedMap.put(x.getKey(),x.getValue());
返回分拣的DMAP;
}

我想要这样的订单

{1总目标, 1.1具体目标, 2一般目标}
等等…

看看
TreeMap
。它按键的自然顺序排序

基于红黑树的NavigableMap实现。地图已排序 根据其键的自然顺序,或通过比较器 在地图创建时提供,具体取决于使用的构造函数


构造器还可以为键引入一个比较器来进行您自己的排序。

查看
TreeMap
。它按键的自然顺序排序

基于红黑树的NavigableMap实现。地图已排序 根据其键的自然顺序,或通过比较器 在地图创建时提供,具体取决于使用的构造函数

构造器还可以为键引入一个比较器来进行您自己的排序。

使用一个自定义的

默认情况下,字符串比较器按字典顺序比较字符串,这就是为什么您会看到这样的顺序
{“1”、“10”、“11”、…、“2”、“20”}

因为我假设您的密钥始终是双精度的,所以这个比较器应该可以工作:

TreeMap<String, Indicador> sortedMap = new TreeMap<>(new Comparator<String>() {
    public int compare(String string1, String string2) {
        return Double.parseDouble(string1) - Double.parseDouble(string2) < 0.0 ? -1 : 1;
    }
});
TreeMap sortedMap=新的TreeMap(新的比较器(){
公共整数比较(字符串string1、字符串string2){
返回Double.parseDouble(string1)-Double.parseDouble(string2)<0.0±1:1;
}
});
使用带有自定义的

默认情况下,字符串比较器按字典顺序比较字符串,这就是为什么您会看到这样的顺序
{“1”、“10”、“11”、…、“2”、“20”}

因为我假设您的密钥始终是双精度的,所以这个比较器应该可以工作:

TreeMap<String, Indicador> sortedMap = new TreeMap<>(new Comparator<String>() {
    public int compare(String string1, String string2) {
        return Double.parseDouble(string1) - Double.parseDouble(string2) < 0.0 ? -1 : 1;
    }
});
TreeMap sortedMap=新的TreeMap(新的比较器(){
公共整数比较(字符串string1、字符串string2){
返回Double.parseDouble(string1)-Double.parseDouble(string2)<0.0±1:1;
}
});

对版本字符串使用比较器,而不仅仅是
Map.Entry.comparingByKey()
。请参阅此问题,例如:@TheDonLUIS1:您试图按什么实际键进行排序?(请把它们放在问题的文本中,而不是作为文本的图像)你得到了什么顺序,你想得到什么顺序?我认为Alex Shesterov走在了正确的轨道上,你可能实际上得到了一个“正确”排序的输出,但你只是想要一个不同的顺序——这意味着你可能想要编写一个
比较器来表达你想要的排序{1 Objetivo-General,2 Objetivo-General,3 Objetivo-General,1.1 Objetivo-specifico{1 Objetivo General,1.1 Objetivo,1.2,2.2,2.3,3…}等。感谢您的时间使用版本字符串的比较器,而不仅仅是
Map.Entry.comparingByKey()
。请参见此问题,例如:@TheDonLUIS1:您试图排序的实际键是什么?(请把它们放在问题的文本中,而不是作为文本的图像。)你得到了什么样的顺序,你想得到什么样的顺序?我认为亚历克斯·谢斯特罗夫走在正确的轨道上,你可能实际上得到了一个“正确的”有序输出,但您只需要一个不同的顺序——这意味着您可能需要编写一个
比较器
,来表达您想要的顺序。我的键是{1 Objetivo-General,2 Objetivo-General,3 Objetivo-General,1.1 Objetivo-specificio,……N Objetivo-General}所以我要的排序是,{1对象一般,10对象一般,11对象一般,…..2对象一般,},我想要的顺序是,{1对象一般,1.1对象一般,1.2,2,2.2,2.3,3…}等等。谢谢你的时间谢谢那非常有用谢谢那非常有用