zoukankan      html  css  js  c++  java
  • Java连载151JUnit简介以及HashMap初步分析 心悦君兮君不知

    一、配置JUnit环境

    • JUnit是一个集成测试单元框架,我们先下载软件包,来配置环境
    package com.bjpowernode.java_learning;

    public class D149_TestJunit {
     
     String message = "hello world";
     MessageUtil messageUtil = new MessageUtil(message);
     @Test
     public void testPrintMessage() {
      assertEquals(message, messageUtil.printMessage());
     }
    }

    class TestRunner {
     public static void main(String[] args) {
      Result result = JUnitCore.runClasses(TestJUnit.class);
      for (Failure failure: result.getFailures()) {
       System.out.println(failure.toString());
      }
      System.out.println(result.wasSuccessful());
     }
    }

    序号 方法 描述
    1 void assertEquals(boolean expected, boolean actual) 检查两个变量或者等式是否平衡
    2 void assertFalse(boolean condition) 检查条件是假的
    3 void assertNotNull(Object object) 检查对象不是空的
    4 void assertNull(Object object) 检查对象是空的
    5 void assertTrue(boolean condition) 检查条件为真
    6 void fail() 在没有报告的情况下使测试不通过

    二、HashMap详解

    1.发展历程

    • 在JDK7的时候,HashMap是采用“数组+链表”的数据结构进行存储,使用链表是为了能够解决hash值重复的时候,存储节点的方案。
    • 在JDK8之后,HashMap是采用“数组+链表+红黑树”的数据结构,使用红黑树进行查找的时候能够提高效率,它的搜索时间复杂度是O(log(n)),而链表的搜索时间复杂度是O(n),在默写状况下链表会转化成红黑树

    2.链表转换成红黑的条件

    • 链表的长度超过8且HashMap中的节点超过64个
    • 如果链表长度超过8,但是节点还没有超过64,会先对数组进行扩容

    3.关键代码

    // 链表长度大于8的时候转换代码为
               if (binCount >= TREEIFY_THRESHOLD - 1)
                   treeifyBin(tab, hash);

    • table长度为64的时候体现在 treeifyBin 方法中的这段代码
            int n, index; Node<K,V> e;
            if (tab == null || (n = tab.length) < MIN_TREEIFY_CAPACITY)
                resize();

    4.为什么转换红黑树的阈值是8

    • 根据源码的解释,是根据概率统计中的泊松分布进行制定的规则,在数量达到8的时候,概率已经小到0.00000006,数量更多的时候,概率就更小了,因此选取了8这个阈值。

    三、源码:

  • 相关阅读:
    Palindrome Linked List 解答
    Word Break II 解答
    Array vs Linked List
    Reverse Linked List II 解答
    Calculate Number Of Islands And Lakes 解答
    Sqrt(x) 解答
    Find Median from Data Stream 解答
    Majority Element II 解答
    Binary Search Tree DFS Template
    188. Best Time to Buy and Sell Stock IV
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/15696140.html
Copyright © 2011-2022 走看看