-
-
Notifications
You must be signed in to change notification settings - Fork 924
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -18,6 +18,78 @@ | |
|
||
public abstract class ArrayUtils { | ||
|
||
/** | ||
* Extracts part of an array into a newly allocated Object[] array. Does not perform safety checks on parameters. | ||
* @param source the source array whose values should be extracted | ||
* @param start the start index, must be >= 0 and < source.length | ||
* @param end the end index (exclusive), must be >= 0 and <= source.length and >= start | ||
* @return a newly allocated array with the extracted elements and length (end - start) | ||
*/ | ||
public static Object[] extractRange(int[] source, int start, int end) { | ||
assert checkExtractRangeArgs(source, start, end); | ||
int length = end - start; | ||
Object[] result = new Object[length]; | ||
System.arraycopy(source, start, result, 0, length); | ||
return result; | ||
} | ||
|
||
private static boolean checkExtractRangeArgs(int[] source, int start, int end) { | ||
assert source != null; | ||
assert start >= 0; | ||
assert start <= source.length; | ||
assert end >= start; | ||
assert end <= source.length; | ||
return true; | ||
} | ||
|
||
/** | ||
* Extracts part of an array into a newly allocated Object[] array. Does not perform safety checks on parameters. | ||
* @param source the source array whose values should be extracted | ||
* @param start the start index, must be >= 0 and < source.length | ||
* @param end the end index (exclusive), must be >= 0 and <= source.length and >= start | ||
* @return a newly allocated array with the extracted elements and length (end - start) | ||
*/ | ||
public static Object[] extractRange(long[] source, int start, int end) { | ||
assert checkExtractRangeArgs(source, start, end); | ||
int length = end - start; | ||
Object[] result = new Object[length]; | ||
System.arraycopy(source, start, result, 0, length); | ||
return result; | ||
} | ||
|
||
private static boolean checkExtractRangeArgs(long[] source, int start, int end) { | ||
assert source != null; | ||
assert start >= 0; | ||
assert start <= source.length; | ||
assert end >= start; | ||
assert end <= source.length; | ||
return true; | ||
} | ||
|
||
/** | ||
* Extracts part of an array into a newly allocated Object[] array. Does not perform safety checks on parameters. | ||
* @param source the source array whose values should be extracted | ||
* @param start the start index, must be >= 0 and < source.length | ||
* @param end the end index (exclusive), must be >= 0 and <= source.length and >= start | ||
* @return a newly allocated array with the extracted elements and length (end - start) | ||
*/ | ||
public static Object[] extractRange(double[] source, int start, int end) { | ||
assert checkExtractRangeArgs(source, start, end); | ||
int length = end - start; | ||
Object[] result = new Object[length]; | ||
System.arraycopy(source, start, result, 0, length); | ||
return result; | ||
} | ||
|
||
private static boolean checkExtractRangeArgs(double[] source, int start, int end) { | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
thomaswue
Contributor
|
||
assert source != null; | ||
assert start >= 0; | ||
assert start <= source.length; | ||
assert end >= start; | ||
assert end <= source.length; | ||
return true; | ||
} | ||
|
||
/** | ||
* Extracts part of an array into a newly allocated Object[] array. Does not perform safety checks on parameters. | ||
* @param source the source array whose values should be extracted | ||
|
You can have only a single check method if you pass in the array as an object parameter and use Arrays.getLength.