构建Hashmap的时候 发现不能用double, 可以用String。
后来才发现double是原始数据类型, Double是它的封装类型,用在HashMap和 List中。
如果用double 无法编译通过,会提示 required reference, found double
排序就用Collections 的sort
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.HashSet;
import java.util.Set;
import java.util.List;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
import java.util.Map.Entry;
class Test{
public static void run(int numA, int numB){
// HashMap<String, HashMap<String, String>> HM = new HashMap<String, HashMap<String, String>>();
HashMap<Double, HashMap<Double, String>> HM = new HashMap<Double, HashMap<Double, String>>();
for(int i=0; i<= numA; i++){
// HashMap<String, String> innerHm = new HashMap<String, String>();
HashMap<Double, String> innerHm = new HashMap<Double, String>();
for(int j=0; j<= numB; j++){
double b = j * 0.01;
// String bs = String.valueOf(b);
// innerHm.put(bs , "test");
innerHm.put(b , "test");
}
double a = i * 0.01;
// String as = String.valueOf(a);
// HM.put(as, innerHm);
HM.put(a, innerHm);
}
Collection<Double> keyA = HM.keySet();
//Collection<String> keyA = HM.keySet();
List<Double> list = new ArrayList<Double>(keyA);
// List<String> list = new ArrayList<String>(keyA);
Collections.sort(list);
// for(Iterator<String> iH = list.iterator(); iH.hasNext();){
for(Iterator<Double> iH = list.iterator(); iH.hasNext();){
double out_num = iH.next();
// String So = String.valueOf(out_num);
System.out.println(out_num);
HashMap<Double, String> inMap = HM.get(out_num);
Collection<Double> it = inMap.keySet();
// Iterator iter = inMap.entrySet().iterator();
List<Double> listIn = new ArrayList<Double>(it);
Collections.sort(listIn);
Iterator<Double> ns_it = listIn.iterator();
while(ns_it.hasNext()){
//Map.Entry<String, String> entry = (Map.Entry) ns_it.next();
double in_num = ns_it.next();
// String in_num = entry.getKey();
String inStr = inMap.get(in_num);
System.out.println(in_num + "\t" + inStr);
}
}
}
}
public class test_SortHashMap {
public static void main(String[] args){
Test t = new Test();
t.run(20, 30);
}
}
这样就可以用浮点数 ,对它们进行排序输出了。
Int是java的原始数据类型,Integer是java为int提供的封装类。
Java为每个原始类型提供了封装类。
原始类型 封装类
boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double
转载于:https://blog.51cto.com/matrix6ro/1890240