- package org.jr.util;
-
- /**
- * Copyright: Copyright (c) 2002-2004
- * Company: JavaResearch(http://www.javaresearch.org)
- * 最后更新日期:2003年4月1日
- * @author Cherami
- */
-
- /**
- * 数组操作工具类,提供常见的数组操作需要的方法。
- * @since 0.5
- */
-
- public class ArrayUtil {
- /**
- * 私有构造方法,防止类的实例化,因为工具类不需要实例化。
- */
- private ArrayUtil() {
- }
-
- /**
- * 得到初始化好的int数组。
- * @param length 数组长度
- * @return 初始化后的int数组,各个元素的值和其索引值相等。
- * @since 0.5
- */
- public static int[] getInitedIntArray(int length) {
- int[] indexes = new int[length];
- for (int i = 0; i < length; i++) {
- indexes[i] = i;
- }
- return indexes;
- }
-
- /**
- * 得到初始化好的int数组。
- * @param length 数组长度
- * @param value 初始值
- * @return 初始化后的int数组,各个元素的值都等于指定的value。
- * @since 0.5
- */
- public static int[] getInitedIntArray(int length, int value) {
- int[] indexes = new int[length];
- for (int i = 0; i < length; i++) {
- indexes[i] = value;
- }
- return indexes;
- }
-
- /**
- * 得到初始化好的boolean数组。
- * @param length 数组长度
- * @param value 初始值
- * @return 初始化后的boolean数组,各个元素的值都等于value。
- * @since 0.5
- */
- public static boolean[] getInitedBooleanArray(int length, boolean value) {
- boolean[] indexes = new boolean[length];
- for (int i = 0; i < length; i++) {
- indexes[i] = value;
- }
- return indexes;
- }
-
- /**
- * 得到指定的对象在对象数组中的索引。
- * @param objects 对象数组
- * @param object 对象
- * @return 对象在对象数组中的位置,不存在于数组中时返回-1
- * @since 0.5
- */
- public static int indexOf(Object[] objects, Object object) {
- for (int i = 0; i < objects.length; i++) {
- if (objects[i].equals(object)) {
- return i;
- }
- }
- return -1;
- }
-
- /**
- * 将原数组的值拷贝到目标数组。
- * 目标数组的大小必须大于等于原数组,一般应该是大小相等,如果目标数组的大小较大则大于的部分保留原值。
- * @param orginalArray 原数组
- * @param targetArray 目标数组
- * @since 0.5
- */
- public static void copyArrayValue(int[] orginalArray, int[] targetArray) {
- for (int i = 0; i < orginalArray.length; i++) {
- targetArray[i] = orginalArray[i];
- }
- }
-
- /**
- * 将数组中的值移位。
- * 移动的方式是将指定位置以后的每个元素依次往前移动一位,指定位置的值移到最后。
- * @param array 数组
- * @param index 位置
- * @since 0.5
- */
- public static void shiftArray(int[] array, int index) {
- int temp = array[index];
- int length = array.length - 1;
- for (int i = index; i < length; i++) {
- array[i] = array[i + 1];
- }
- array[length] = temp;
- }
-
- /**
- * 打印数组的值。
- * 数组前后为一个"["和"]",中间用逗号分隔。
- * @param array 数组
- * @since 0.5
- */
- public static void printArray(int[] array) {
- int length = array.length - 1;
- StringBuffer buffer = new StringBuffer(length * 5);
- buffer.append("[");
- for (int i = 0; i < length; i++) {
- buffer.append(array[i]);
- buffer.append(",");
- }
- buffer.append(array[length] + "]");
- System.out.println(buffer.toString());
- }
-
- /**
- * 将指定的值插入到数组中的指定位置。
- * 数组最后一个元素的值将被丢弃。
- * @param array 数组
- * @param index 插入位置的索引
- * @param value 插入的值
- * @since 0.5
- */
- public static void insertValueToArray(int[] array, int index, int value) {
- int length = array.length - 1;
- for (int i = length; i > index; i--) {
- array[i] = array[i - 1];
- }
- array[index] = value;
- }
- /**
- * 以指定的索引顺序打印整型数组的值。
- * 两个数组的长度应该是相等的,但是程序中没有进行判断。
- * 数组前后为一个"["和"]",中间用逗号分隔。
- * @param array 数组
- * @param indexes 索引数组
- * @since 0.6
- */
- public static void printArrayByIndexes(int[] array,int[] indexes) {
- int length = array.length - 1;
- StringBuffer buffer = new StringBuffer(length * 5);
- buffer.append("[");
- for (int i = 0; i < length; i++) {
- buffer.append(array[indexes[i]]);
- buffer.append(",");
- }
- buffer.append(array[indexes[length]] + "]");
- System.out.println(buffer.toString());
- }
- /**
- * 将数组的值全部反转。
- * @param array 数组
- * @since 0.6
- */
- public static void reverseArray(int[] array) {
- int end =array.length-1;
- int limit=array.length2;
- for (int i=0;i<limit ;i++ ) {
- int temp=array[i];
- array[i]=array[end-i];
- array[end-i]=temp;
- }
-
- }
- }