EasyArray.java [src/java/m/multiobj] Revision:   Date:
package m.multiobj;

import java.util.Arrays;
import java.util.function.Function;
import java.util.function.IntFunction;

/**
 * Class that provides function to make integer conversions easier. 
 * 
 * @author Andre Dozier <andre.dozier@rams.colostate.edu>
 */
public class EasyArray {
    
    public static Boolean[] toBoolean(boolean[] values) { 
        Boolean[] v = new Boolean[values.length]; 
        for (int i = 0; i < values.length; i++) { 
            v[i] = values[i]; 
        }
        return v;
    }
    
    public static boolean[] toBoolean(Boolean[] values) { 
        boolean[] v = new boolean[values.length]; 
        for (int i = 0; i < values.length; i++) { 
            v[i] = values[i]; 
        }
        return v;
    }

    public static Integer[] toInt(int[] values) { 
        Integer[] v = new Integer[values.length]; 
        for (int i = 0; i < values.length; i++) { 
            v[i] = values[i]; 
        }
        return v;
    }
    
    public static int[] toInt(Integer[] values) { 
        int[] v = new int[values.length]; 
        for (int i = 0; i < values.length; i++) { 
            v[i] = values[i]; 
        }
        return v;
    }
    
    public static Double[] toDouble(double[] values) { 
        Double[] v = new Double[values.length]; 
        for (int i = 0; i < values.length; i++) { 
            v[i] = values[i]; 
        }
        return v;
    }
    
    public static double[] toDouble(Double[] values) { 
        double[] v = new double[values.length]; 
        for (int i = 0; i < values.length; i++) { 
            v[i] = values[i]; 
        }
        return v;
    }
    
    public static double[] divideBy(double[] values, int[] divisors) {   
        double[] v = new double[values.length]; 
        for (int i = 0; i < values.length; i++) {
            if (divisors[i] > 0){ 
                v[i] = values[i] / divisors[i]; 
            }
        }
        return v;
    }

    public static <T, U> U[] convert(T[] from, Function<T, U> func, IntFunction<U[]> generator) { 
        return Arrays.stream(from).map(func).toArray(generator); 
    }
    
    public static String[] toString(Boolean[] values) { 
        return convert(values, v -> String.valueOf(v), String[]::new); 
    }
    
    public static String[] toString(boolean[] values) { 
        return toString(toBoolean(values));
    }
    
    public static String toBinaryString(Boolean[] values) { 
        return String.join("", convert(values, v -> v ? "1" : "0", String[]::new)); 
    }
    
    public static String toBinaryString(boolean[] values) { 
        return toBinaryString(toBoolean(values));
    }
    
    public static String[] toString(Integer[] values) { 
        return convert(values, v -> String.valueOf(v), String[]::new); 
    }
    
    public static String[] toString(int[] values) { 
        return toString(toInt(values));
    }
    
    public static String[] toString(Double[] values) { 
        return convert(values, v -> String.valueOf(v), String[]::new); 
    }
    
    public static String[] toString(double[] values) { 
        return toString(toDouble(values));
    }
    
}