0
我有以下情况,我尝试按键排列地图值。按键顺序第一个值必须是按顺序排列的值。如何按键排序地图值?
import java.util.Comparator;
import java.util.Map;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps;
import com.google.common.collect.Ordering;
public class MyEnumKeySortTest {
enum Key{
key1, key2
}
enum Door{
door1, door2
}
public static void main(String[] args) {
Map<Key, Door> test = ImmutableMap.<Key, Door> of(Key.key1, Door.door1, Key.key2, Door.door2);
printValues(test);
Comparator<Key> comparator = Ordering.explicit(Key.key1);
/*
* should print
*
* door1
* door2
*/
test = Maps.newTreeMap(comparator);
printValues(test);
Comparator<Key> comparator2 = Ordering.explicit(Key.key2);
/*
* should print
*
* door2
* door1
*/
test = Maps.newTreeMap(comparator2);
printValues(test);
}
private static void printValues(Map<Key, Door> test) {
System.out.println("==========================================================");
for(Door r : test.values()){
System.out.println(r.name());
}
}
}
这实际上令你困惑。什么是'Ordering.explicit'用于?你是否真的想按键或值来排序?为什么你从一开始就不使用'ImmutableSortedMap',如果你正在用键排序呢? – 2015-03-30 19:51:50
我想让这个键值成为第一个值。从现有的地图。 – Njax3SmmM2x2a0Zf7Hpd 2015-03-30 19:53:53
_这是键值? ('Ordering.explicit'必须按照你想要的顺序取所有的值,所以'Ordering.explicit(key1,key2)'把key1放在key2之前。) – 2015-03-30 19:55:53