大家好,又见面了,我是你们的朋友全栈君。
这段时间常常需要对数据的数据进行截取,以方便解析。
原来一直用的Array.ConstrainedCopy();以及 Array.Copy();来进行数组复制截取
- 先看Array.ConstrainedCopy():其说明如下
- public static void ConstrainedCopy(Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length);
// 摘要:
// 从指定的源索引开始,复制 System.Array 中的一系列元素,将它们粘贴到另一 System.Array 中(从指定的目标索引开始)。保证在复制未成功完成的情况下撤消所有更改。
//
// 参数:
// sourceArray:
// System.Array,它包含要复制的数据。
//
// sourceIndex:
// 一个 32 位整数,它表示 sourceArray 中复制开始处的索引。
//
// destinationArray:
// System.Array,它接收数据。
//
// destinationIndex:
// 一个 32 位整数,它表示 destinationArray 中存储开始处的索引。
//
// length:
// 一个 32 位整数,它表示要复制的元素数目。
//
// 异常:
// T:System.ArgumentNullException:
// sourceArray 为 null。- 或 -destinationArray 为 null。
//
// T:System.RankException:
// sourceArray 和 destinationArray 的秩不同。
//
// T:System.ArrayTypeMismatchException:
// sourceArray 类型不同于并且不是从 destinationArray 类型派生的。
//
// T:System.InvalidCastException:
// sourceArray 中的至少一个元素无法强制转换为 destinationArray 类型。
//
// T:System.ArgumentOutOfRangeException:
// sourceIndex 小于 sourceArray 的第一维的下限。- 或 -destinationIndex 小于 destinationArray
// 的第一维的下限。- 或 -length 小于零。
//
// T:System.ArgumentException:
// length 大于从 sourceIndex 到 sourceArray 末尾的元素数。- 或 -length 大于从 destinationIndex
// 到 destinationArray 末尾的元素数。
- 再看Array.Copy();:
它有四个重载,都差不多,具体就不多累赘了,直接来看:
- 第一种是三参数的重载(有两种,不过只是长度length由int变为long了)
public static void Copy(Array sourceArray, Array destinationArray, int length);
// 摘要:
// 从第一个元素开始复制 System.Array 中的一系列元素,将它们粘贴到另一 System.Array 中(从第一个元素开始)。长度指定为 32 位整数。
//
- 2二种是五参数的重载(同样有两种,长度length及索引index由int变为long)
public static void Copy(Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length);
// 摘要:
// 从指定的源索引开始,复制 System.Array 中的一系列元素,将它们粘贴到另一 System.Array 中(从指定的目标索引开始)。长度和索引指定为
// 32 位整数。
后来了解到还有一种方法可以截取,如下:
data.Skip(n).Take(m).ToArray();
- data是源数组
- Skip()定义如下
- public static IEnumerable<TSource> Skip<TSource>(this IEnumerable<TSource> source, int count);
- // 摘要:
// 跳过序列中指定数量的元素,然后返回剩余的元素。
//
- Take定义如下:
- public static IEnumerable<TSource> Take<TSource>(this IEnumerable<TSource> source, int count);
- // 摘要:
// 从序列的开头返回指定数量的连续元素。
//
现在将这几种方法记录下来,主要了解的也不是很深,就不对其做什么多余的解释说明了,以免误导大家。
如果后续有其他方法,我会持续更新,同时也希望大家能给我更多的指点。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/133578.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...