【JAVA基础】HashMap,TreeMap,LinkedHashMap的一个小区别

简而言之,最最最简而言之。

当我们把元素一个一个put进map后,再遍历。

  • HashMap 是乱序的
  • TreeMap 会按照一定的规则排序(规则可以传入构造)
  • LinkedHashMap 会保持你注入map的顺序
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Random;
import java.util.TreeMap;

public class TestMaps {
       public static void main(String[] args) {

        Map hashmap = new HashMap();
        putMap(hashmap);
        printMap(hashmap);   //乱序排序

//      //测试treeMap  
        Map treemap = new TreeMap();
        putMap(treemap);
        printMap(treemap);    //结果默认按照key进行升序排序了,破坏了插入的顺序

        //测试linkedmap
        Map linkedmap = new LinkedHashMap();
        putMap(linkedmap);
        printMap(linkedmap);  //排序保持着插入顺序
    }

    public static void putMap(Map map){
        Random random = new Random();
        System.out.println("这是插入的顺序..................");
        for(int i=0;i<=10;i++){
           int n=random.nextInt(1000);
           map.put(n, n+"A");
           System.out.print(n+"||");
        }
        System.out.println();
        System.out.println("接下来是遍历出来的顺序...............");
       }


       public static void printMap(Map map){
            StringBuffer sb = new StringBuffer();
            //接下来遍历TreeMap
            Iterator it = map.entrySet().iterator();

            while(it.hasNext()){
                Map.Entry entry = (Map.Entry)it.next();
                Object key = entry.getKey();
                sb.append(key).append("||");
            }
            System.out.println(sb.toString());
            System.out.println();
       }

}

这是HashMap插入的顺序………………
49||561||115||334||191||466||891||770||166||781||426||
接下来是遍历出来的顺序……………
49||426||770||115||191||561||334||891||781||466||166||

这是TreeMap插入的顺序………………
271||454||547||388||260||830||637||314||310||841||170||
接下来是遍历出来的顺序……………
170||260||271||310||314||388||454||547||637||830||841||

这是LinkedHashMap插入的顺序………………
782||145||300||149||648||193||728||80||522||819||690||
接下来是遍历出来的顺序……………
782||145||300||149||648||193||728||80||522||819||690||

结论一目了然。 OVER

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值