public void splitBTreeKey(BTreeNode parent, int index, BTreeNode toChild)
    {
        int middleKey = keyList[t - 1];
        
        int[] moveBTreeKey = new int[t - 1];
        
        for (int i = t; i < keyList.length; i++)
        {
            moveBTreeKey[i - t] = keyList[i];
            keyList[i] = Integer.MAX_VALUE;
        }
        //迁移key,设置size
        toChild.setKeyList(moveBTreeKey);
        BTreeNode[] toChildSubNode = new BTreeNode[t];
        if (!isLeaf)
        {
            //移动子节点
            for (int i = 0; i < t; i++)
            {
                BTreeNode subNode = subTreeNodeList[i + t];
                toChildSubNode[i] = subNode;
                subTreeNodeList[i + t] = null;
            }
            toChild.setSubTreeNodeList(toChildSubNode);
        }
        this.size = t - 1;
        
        //父节点调整，将中间key middleKey提升到父节点
        int[] newKeyList = new int[parent.getSize() + 1];
        
        int[] parentKeys = parent.getKeyList();
        for (int i = 0; i < parentKeys.length; i++)
        {
            if (i < index)
            {
                newKeyList[i] = parentKeys[i];
            }
            else if (i >= index)
            {
                newKeyList[i + 1] = parentKeys[i];
            }
        }
        newKeyList[index] = middleKey;
        BTreeNode[] newSuBTreeNode = new BTreeNode[size + 1];
        BTreeNode[] parentNodes = parent.getSubTreeNodeList();
        for (int i = 0; i < parentNodes.length; i++)
        {
            if (i <= index)
            {
                newSuBTreeNode[i] = parentNodes[i];
            }
            else if (i > index)
            {
                newSuBTreeNode[i + 1] = parentNodes[i];
            }
        }
        newSuBTreeNode[index + 1] = toChild;
        
        parent.setSubTreeNodeList(newSuBTreeNode);
        parent.setKeyList(newKeyList);
    }