需要对键值对(key-value)的key进行排序的时候,可以利用TreeMap来操作,TreeMap默认情况下就是按照key的大小来进行排序的(升序),所以只需要使用TreeMap来存储key-value对时,就是排好序的。想要按序取数据时,利用Iterator。
- 升序Demo
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.TreeMap;
public class Main {
public static void main(String args[]) {
System.out.println("kaishi");
Random random = new Random();
Map<Double, Integer> map = new TreeMap<Double, Integer>();
//随机产生数据,存入到map中;默认情况下时升序的。
for(int i=0;i<100;i++) {
map.put(random.nextDouble()*1000,random.nextInt(1000));
}
//使用Iterator来取key-value对;
Set<Double> keySet = map.keySet();
Iterator<Double> iter = keySet.iterator();
while (iter.hasNext()) {
Double key = iter.next();
System.out.println(key + ":" + map.get(key)); //打印结果,会发现key都是按升序输出的
}
}
}
- 降序Demo
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.TreeMap;
import java.util.Comparator;
public class Main {
public static void main(String args[]) {
System.out.println("kaishi");
Random random = new Random();
Map<Double, Integer> map = new TreeMap<Double, Integer>(
new Comparator<Double>(){
@Override
public int compare(Double o1, Double o2) {
//利用Comparator来实现降序;
return (int) (o2-o1);
}
});
for(int i=0;i<100;i++) {
map.put(random.nextDouble()*1000,random.nextInt(1000));
}
Set<Double> keySet = map.keySet();
Iterator<Double> iter = keySet.iterator();
while (iter.hasNext()) {
Double key = iter.next();
System.out.println(key + ":" + map.get(key));//打印结果,会发现key都是按降序输出的
}
}
}