/** * Calculate Median * @param values values * @param length length * @return median */ public static int median(int[] values, final int length) { return median(values, 0, length); }
/** * This would be a good opportunity to reintroduce dynamic invoke * * @param function function * @return */ public long reduceBy(Object function, String name) { return Int.reduceBy(values, end, function, name); }
/** * standardDeviation * * @return standardDeviation */ public int standardDeviation() { return Int.standardDeviation(values, end); }
puts("st.dev", list.standardDeviation()); equalsOrDie(2000, list.sum()); equalsOrDie(400, list.max()); equalsOrDie(100, list.min()); equalsOrDie(250, list.mean()); equalsOrDie(250, list.median()); equalsOrDie(112, list.standardDeviation()); puts("st.dev", list.standardDeviation()); equalsOrDie(2000, list.sum()); equalsOrDie(400, list.max()); equalsOrDie(100, list.min()); equalsOrDie(250, list.mean()); equalsOrDie(250, list.median()); equalsOrDie(112, list.standardDeviation()); equalsOrDie(2000, (int) Int.sum(employees, "salary")); equalsOrDie(250, Int.median(employees, "salary")); equalsOrDie(112, (int) Int.standardDeviation(employees, "salary")); puts("sum", (int) Int.sum(employees, "salary")); puts("median", Int.median(employees, "salary")); puts("stdev", Int.standardDeviation(employees, "salary"));
/** * Sum * Provides overflow protection. * @param values values in int * @return sum */ public static int sum( int[] values, int length ) { return sum( values, 0, length); }
/** * Grabs a slice of this array * @param array the array you are getting slice from * @param startIndex the start index of the slice * @param endIndex the end index of the slice * @return the new slice */ @Universal public static int[] slc( int[] array, int startIndex, int endIndex ) { final int start = calculateIndex( array, startIndex ); final int end = calculateEndIndex( array, endIndex ); final int newLength = end - start; if ( newLength < 0 ) { throw new ArrayIndexOutOfBoundsException( String.format( "start index %d, end index %d, length %d", startIndex, endIndex, array.length ) ); } int[] newArray = new int[ newLength ]; System.arraycopy( array, start, newArray, 0, newLength ); return newArray; }
return add( array, v ); final int index = calculateIndex( array, idx );
/** * Returns the value at the given index. * @param array the array you are getting the from. * @return the value */ @Universal public static int atIndex( final int[] array, final int index ) { final int i = calculateIndex( array, index ); return array[ i ]; }
/** * Add a new value to the list but don't employ a wrapper. * * @param integer new value * @return was able to add. */ public boolean addInt(int integer) { if (end + 1 >= values.length) { values = grow(values); } values[end] = integer; end++; return true; }
/** * Sum * Provides overflow protection. * @param values values in int * @return sum */ public static long bigSum( int[] values ) { return bigSum(values, 0, values.length); }
/** * Grabs a slice of this array * @param array the array you are getting slice from * @param endIndex the end index of the slice * @return the new slice */ @Universal public static int[] slcEnd( int[] array, int endIndex ) { final int end = calculateEndIndex( array, endIndex ); final int newLength = end; // + (endIndex < 0 ? 1 : 0); if ( newLength < 0 ) { throw new ArrayIndexOutOfBoundsException( String.format( "start index %d, length %d", endIndex, array.length ) ); } int[] newArray = new int[ newLength ]; System.arraycopy( array, 0, newArray, 0, newLength ); return newArray; }
@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; IntList integers = (IntList) o; if (end != integers.end) return false; if (!Int.equals(0, end, values, integers.values)) return false; return true; }
/** * Sum * Provides overflow protection. * @param values values in int * @return sum */ public static int sum( int[] values ) { return sum( values, 0, values.length); }
/** * Grabs a slice of this array * @param array the array you are getting slice from * @param startIndex the start index of the slice * @param endIndex the end index of the slice * @return the new slice */ @Universal public static int[] sliceOf( int[] array, int startIndex, int endIndex ) { final int start = calculateIndex( array, startIndex ); final int end = calculateEndIndex( array, endIndex ); final int newLength = end - start; if ( newLength < 0 ) { throw new ArrayIndexOutOfBoundsException( String.format( "start index %d, end index %d, length %d", startIndex, endIndex, array.length ) ); } int[] newArray = new int[ newLength ]; System.arraycopy( array, start, newArray, 0, newLength ); return newArray; }
return add( array, v ); final int index = calculateIndex( array, idx );
/** * Sets the value at the given index. * @param array the array you are setting the value to. * @param value the new value. * @return the value */ @Universal public static void atIndex( final int[] array, int index, int value ) { final int i = calculateIndex( array, index ); array[ i ] = value; }
/** * Add a new value to the list but don't employ a wrapper. * * @param integer new value * @return was able to add. */ public IntList add(int integer) { if (end + 1 >= values.length) { values = grow(values); } values[end] = integer; end++; return this; }
/** * Sum * Provides overflow protection. * @param values values in int * @return sum */ public static long bigSum( int[] values ) { return bigSum(values, 0, values.length); }
/** * Grabs a slice of this array * @param array the array you are getting slice from * @param endIndex the end index of the slice * @return the new slice */ @Universal public static int[] slcEnd( int[] array, int endIndex ) { final int end = calculateEndIndex( array, endIndex ); final int newLength = end; // + (endIndex < 0 ? 1 : 0); if ( newLength < 0 ) { throw new ArrayIndexOutOfBoundsException( String.format( "start index %d, length %d", endIndex, array.length ) ); } int[] newArray = new int[ newLength ]; System.arraycopy( array, 0, newArray, 0, newLength ); return newArray; }
@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; IntList integers = (IntList) o; if (end != integers.end) return false; if (!Int.equals(0, end, values, integers.values)) return false; return true; }