package com.coderising.array; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; /** * Created by huitailang on 17/3/3. * 数组工具类 */ public class ArrayUtil<T> { public static final int[] EMPTY_ARRAY = {}; public static void reverseArray(int[] origin) { for (int i = 0; i < origin.length / 2; i++) { int tmp = 0; tmp = origin[i]; origin[i] = origin[origin.length - i - 1]; origin[origin.length - i - 1] = tmp; } } public static int[] removeZero(int[] oldArray) { int count = 0; for (int i = 0; i < oldArray.length; i++) { if (oldArray[i] != 0) { count++; } } int[] noZeroArray = new int[count]; count = 0; for (int i = 0; i < oldArray.length; i++) { if (oldArray[i] != 0) { noZeroArray[count++] = oldArray[i]; } } return noZeroArray; } public static int[] merge(int[] array1, int[] array2) { //1.合并 int[] mergedArray = new int[array1.length + array2.length]; System.arraycopy(array1, 0, mergedArray, 0, array1.length); System.arraycopy(array2, 0, mergedArray, array1.length, array2.length); //2.排序 Arrays.sort(mergedArray); //3.去重 Integer[] tmpArray = removeDuplicate(mergedArray); System.out.println(Arrays.toString(tmpArray)); int[] resultArray = new int[tmpArray.length]; for (int i = 0; i < tmpArray.length; i++) { resultArray[i] = tmpArray[i]; } return resultArray; } private static Integer[] removeDuplicate(int[] origin) { ArrayList<Integer> arrayList = new ArrayList(); for (int i = 0; i < origin.length; i++) { boolean repeat = false; for (int j = 0; j < arrayList.size(); j++) { if (origin[i] == arrayList.get(j)) { repeat = true; break; } } if (!repeat) { arrayList.add(origin[i]); } } return arrayList.toArray(new Integer[]{}); } public static int[] grow(int[] oldArray, int size) { int[] newArray = new int[oldArray.length + size]; int[] zeroArray = new int[size]; System.arraycopy(oldArray, 0, newArray, 0, oldArray.length); return newArray; } public static int[] fibonacci(int max) { if (max == 1) { return EMPTY_ARRAY; } ArrayList<Integer> arrayList = new ArrayList<Integer>(); int n = 1; while (true) { int ret = 0; if ((ret = fibonacci0(n)) > max) { break; } else { arrayList.add(ret); } n++; } int[] array = new int[arrayList.size()]; int i = 0; for (Iterator<Integer> iterator = arrayList.iterator(); iterator.hasNext(); ) { Integer value = iterator.next(); array[i++] = value; } return array; } private static int fibonacci0(int n) { if (n <= 2) { return 1; } else { return fibonacci0(n - 1) + fibonacci0(n - 2); } } public static int[] getPrimes(int max) { ArrayList<Integer> primesList = new ArrayList<Integer>(); for (int i = 0; i < max; i++) { if (isPrime(i)) { primesList.add(i); } } int[] primeArray = new int[primesList.size()]; int i = 0; for (Iterator<Integer> iterator = primesList.iterator(); iterator.hasNext(); ) { Integer prime = iterator.next(); primeArray[i++] = prime; } return primeArray; } private static boolean isPrime(int a) { boolean flag = true; if (a < 2) {// 素数不小于2 return false; } else { for (int i = 2; i <= Math.sqrt(a); i++) { if (a % i == 0) {// 若能被整除,则说明不是素数,返回false flag = false; break;// 跳出循环 } } } return flag; } public static int[] getPerfectNumbers(int max){ ArrayList<Integer> arrayList = new ArrayList<Integer>(); for(int i = 0; i < max; i++){ if(isPerfectNumber(i)){ arrayList.add(i); } } int[] array = new int[arrayList.size()]; int i = 0; for(Iterator<Integer> iterator = arrayList.iterator(); iterator.hasNext(); ){ int perfectNumber = iterator.next(); array[i++] = perfectNumber; } return array; } public static boolean isPerfectNumber(int n) { int sum = 0; for (int i = 1; i < n; i++) { if (n % i == 0) { sum = sum + i; } } if (sum == n) { return true; } else return false; } public static String join(int[] array, String seperator){ StringBuilder sb = new StringBuilder(); for(int i = 0; i < array.length; i++){ sb.append(array[i]); sb.append(seperator); } return sb.toString().substring(0, sb.toString().length() - 1); } public static <T> T[] convertListToArray(List<T> list){ Object[] array = new Object[list.size()]; int i = 0; for(Iterator<T> iterator = list.iterator(); iterator.hasNext(); ){ T value = iterator.next(); array[i] = (Object)value; } return (T[])array; } public static void main(String[] args) { System.out.println(fibonacci0(4)); } }