package com.bernard.inutil; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; /** * @author Mysaa * @date on 22/07/17. */ public class ArrayInutil { public static double sum(Collection items) { double sum = 0; for (Double x : items) sum += x; return sum; } public static List asize(List items, int length, Double[] failSumsArray, double failSum, Random r){ if(Arrays.class.equals(items.getClass().getEnclosingClass())) items = new ArrayList<>(items); return asizeP(items,length,failSumsArray,failSum,r); } public static List asize(X[] items,int length,Double[] failSumsArray,double failSum,Random r){ return asize(Arrays.asList(items),length,failSumsArray,failSum,r); } private static List asizeP(List items,int length,Double[] failSumsArray,double failSum,Random r){ ArrayList failSums = new ArrayList<>(Arrays.asList(failSumsArray)); ArrayList finalItems = new ArrayList<>(); if(items.size() <= 0)System.err.println("ArrayInutil: List empty !"+items.add(null)); if(items.size() < length){ int n = (int) Math.floor(length / items.size()); for (int i = 0; i < n; i++) finalItems.addAll(items); } double currentFailSum = failSum; while(finalItems.size()= ran){ currentFailSum -= failSums.get(i); finalItems.add(items.get(i)); failSums.remove(i); items.remove(i); break; } } } Collections.shuffle(finalItems,r); return finalItems; } public static Map count(List items){ Map out = new HashMap<>(); for (X x:items) { X key = null; for (X k:out.keySet()) if(x.equals(k)) key = k; if (key == null) out.put(x, 1); else out.put(key, out.get(x) + 1); } return out; } public static Long[] toObjectArray(long[] array){ Long[] out = new Long[array.length]; for (int i = 0; i < out.length; i++) out[i] = array[i]; return out; } public static Double[] toObjectArray(double[] array){ Double[] out = new Double[array.length]; for (int i = 0; i < out.length; i++) out[i] = array[i]; return out; } public static Integer[] toObjectArray(int[] array){ Integer[] out = new Integer[array.length]; for (int i = 0; i < out.length; i++) out[i] = array[i]; return out; } public static Long[][] toObjectArray(long[][] array){ Long[][] out = new Long[array.length][]; for (int i = 0; i < out.length; i++) out[i] = toObjectArray(array[i]); return out; } public static Integer[][] toObjectArray(int[][] array){ Integer[][] out = new Integer[array.length][]; for (int i = 0; i < out.length; i++) out[i] = toObjectArray(array[i]); return out; } public static long[] toPrimitiveArray(Long[] array){ long[] out = new long[array.length]; for (int i = 0; i < out.length; i++) out[i] = array[i]; return out; } public static int[] toPrimitiveArray(Integer[] array){ int[] out = new int[array.length]; for (int i = 0; i < out.length; i++) out[i] = array[i]; return out; } public static long[][] toPrimitiveArray(Long[][] array){ long[][] out = new long[array.length][]; for (int i = 0; i < out.length; i++) out[i] = toPrimitiveArray(array[i]); return out; } public static int[][] toPrimitiveArray(Integer[][] array){ int[][] out = new int[array.length][]; for (int i = 0; i < out.length; i++) out[i] = toPrimitiveArray(array[i]); return out; } public static boolean inArray (T needle, T[] haystack){ for(T item : haystack) if(item.equals(needle))return true; return false; } public static Integer[] range (int low, int high){ Integer[] result = new Integer[high-low]; for(int i = 0;i int indexOf(T[] haystack, T needle) { for (int i = 0; i < haystack.length; i++) { if(haystack[i] != null && haystack[i].equals(needle)) return i; } return -1; } public static void removeIndex(T[] array, int index) { System.arraycopy(array,index+1,array,index, array.length-index); } }