最近在做一道由一个二叉树的 中、前遍历 重构二叉树的题
用到了Arrays 类中的copyOfRange方法 是一个 静态方法 这个将指定数组的指定范围复制到新数组中。
不过遇到了一个问题,就是刚开始时候 怎么都不是想要的结果,最后发现是方法参数 ---------to---------- 的猫腻,写下来希望让大家看到!
下面以 返回类型为 int 类型为例:
- public static int[] copyOfRange(int[] original, int from, int to)
- 将指定数组的指定范围复制到新数组中。 范围( from )的初始指数必须在零和original.length之间,包括在内。 original[from]的值被放置在副本的初始元素中(除非from == original.length或from == to )。 原始数组中后续元素的值将被放置在副本中的后续元素中。 必须大于或等于from的范围( to )的最终指数可能大于original.length ,在这种情况下0被放置在其索引大于或等于original.length - from的副本的所有元素中。 返回的数组的长度将为to - from 。
- 参数
-
original- 要从中复制范围的数组from- 要复制的范围的初始索引(包括)to- 要复制的范围的最终索引,排他。 (该索引可能位于数组之外) -
记住from包括 to不包括
-
结果
一个包含原始数组的指定范围的新数组,用零截取或填充以获得所需的长度
异常
ArrayIndexOutOfBoundsException- 如果from < 0或from > original.lengthIllegalArgumentException- 如果 from > toNullPointerException- 如果 original为空
-
Arrays.copyOfRange方法详解与陷阱
本文探讨了在重构二叉树题目中使用Arrays.copyOfRange方法遇到的问题,详细解释了方法参数`from`和`to`的含义,指出`from`包含而`to`不包含在复制范围内,错误理解可能导致不期望的结果。并提醒读者注意异常情况,如负数索引、from大于to或原始数组为空。
6399

被折叠的 条评论
为什么被折叠?



