我可以换一个HashMap的两个值的键,或做我需要做一些聪明吗?
东西会是这个样子:
Map.Entry<Integer, String> prev = null;
for (Map.Entry<Integer, String> entry: collection.entrySet()) {
if (prev != null) {
if (entry.isBefore(prev)) {
entry.swapWith(prev)
}
}
prev = entry;
}
好吧,如果你只是其中的键是有序的Map后的时候,使用SortedMap
来代替。
SortedMap<Integer, String> map = new TreeMap<Integer, String>();
你可以依靠的关键的自然顺序(如,其Comparable
界面),或者你可以通过一个做自定义排序Comparator
。
或者你可以调用setValue()
的Entry
。
Map.Entry<Integer, String> prev = null;
for (Map.Entry<Integer, String> entry: collection.entrySet()) {
if (prev != null) {
if (entry.isBefore(prev)) {
String current = entry.getValue();
entry.setValue(prev.getValue();
prev.setValue(current);
}
}
prev = entry;
}
个人而言,我刚刚去一个SortedMap
。
没有什么像在Map
或Entry
接口,但它的实现很简单:
Map.Entry<Integer, String> prev = null;
for (Map.Entry<Integer, String> entry: collection.entrySet()) {
if (prev != null) {
if (entry.isBefore(prev)) {
swapValues(e, prev);
}
}
prev = entry;
}
private static <V> void swapValues(Map.Entry<?, V> first, Map.Entry<?, V> second)
{
first.setValue(second.setValue(first.getValue()));
}