构建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);
    }
}


这样就可以用浮点数 ,对它们进行排序输出了。


Intjava的原始数据类型,Integerjavaint提供的封装类。


Java为每个原始类型提供了封装类。


原始类型   封装类

boolean      Boolean

char           Character

byte           Byte

short          Short

int              Integer

long           Long

float           Float

double      Double