Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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 如何对番石榴进行分类';“仅通过关键点进行多重映射?”?_Java_Guava_Treemaps - Fatal编程技术网

Java 如何对番石榴进行分类';“仅通过关键点进行多重映射?”?

Java 如何对番石榴进行分类';“仅通过关键点进行多重映射?”?,java,guava,treemaps,Java,Guava,Treemaps,我有番石榴图书馆的多重地图。我只想按键排序。我试过: Multimap<String, MyObj> sortedMultiMap = TreeMultimap.create(Ordering.from(new Comparator<String>() { @Override public int compare(String lhs, String rhs) { //my comparison here

我有番石榴图书馆的多重地图。我只想按键排序。我试过:

Multimap<String, MyObj> sortedMultiMap =
    TreeMultimap.create(Ordering.from(new Comparator<String>() {
        @Override
        public int compare(String lhs, String rhs) {
            //my comparison here
        }
    }), Ordering.natural());//i want not to sort values at all,MyObj doesn't implement Comparable
sortedMultiMap.putAll(notSortedMultiMap);
Multimap-sortedMultiMap=
TreeMultimap.create(Ordering.from)(newcomparator()){
@凌驾
公共整数比较(字符串lhs、字符串rhs){
//我的比较在这里
}
}),Ordering.natural())//我不想对值进行排序,MyObj不实现可比较的
sortedMultiMap.putAll(非sortedMultiMap);

但正如您所看到的,TreeMultiMap.create方法有两个参数——键和值的比较器。如何仅按键对MultiMap进行排序?

在Louis Wasserman给出答案后更新即使我的原始答案解决了问题并回答了问题,我认为这是更优雅的解决方案

Multimap<String, MyObj> multimap = 
    MultimapBuilder.treeKeys(/* you comparator here */).linkedListValues().build();

使用MultimapBuilder:

 Multimap<String, MyObj> multimap = 
      MultimapBuilder.treeKeys().linkedListValues().build();
Multimap Multimap=
MultimapBuilder.treeKeys().linkedListValues().build();

我已经试过了,但似乎Ordering.arbitral()只是随机混合了我的值。我需要默认顺序,可能它与存储为集合的MultiMap值相关-但应该是LinkedList?嗯,它应该在VM的生命周期中给出相同的顺序。“所施加的命令没有任何意义,但在VM的生命周期中,它是不变的”。但也许这在您的用例中也不起作用?您的用例中的“默认顺序”是指“插入顺序”吗?您所说的“我需要默认顺序”是什么意思?(这是你问题标题的第七个谷歌结果)很好,我用这个解决方案更新了我的答案,因为它是公认的答案,而且这个解决方案更优雅。希望这对你没问题。
 Multimap<String, MyObj> multimap = 
      MultimapBuilder.treeKeys().linkedListValues().build();