zoukankan      html  css  js  c++  java
  • 数组数据生成器

    package com.bsc.algorithm.data.generator;
    
    import java.lang.reflect.Array;
    import java.util.Random;
    
    /**
     * 数组生成器
     * @author bsc
     *
     */
    public class ArrayGenerator {
    
        /**
         * 随机生成size大小的数组
         * @param arrayClass 数组class,例如Integer[].class,int[].class,Character[].class,char[].class
         * @param size 数组大小
         * @param min 最小值
         * @param max 最大值
         * @return
         */
        @SuppressWarnings("unchecked")
        public static <T> T random(Class<T> arrayClass, int size,int min,int max) {
            int diff = max - min + 1;
            Random random = new Random();
            Class<?> componentType = arrayClass.getComponentType();
            String componentName = componentType.getName();
            T array = (T) Array.newInstance(componentType, size);
            
            if("char".equals(componentName) || Character.class.getName().equals(componentName)) {
                for (int i = 0; i < size; i++) {
                    Array.set(array, i, (char)(random.nextInt(diff) + min));
                }
            }else {
                for (int i = 0; i < size; i++) {
                    Array.set(array, i, random.nextInt(diff) + min);
                }
            }
            return array;
        }
        
        /**
         * 生成指定序列数组
         * @param arrayClass 数组class,例如Integer[].class,int[].class,Character[].class,char[].class
         * @param size 数组大小
         * @param start 数组开始值
         * @param increment 数组元素间增量
         * @return
         */
        @SuppressWarnings("unchecked")
        public static <T> T seq(Class<T> arrayClass, int size,int start,int increment) {
            Class<?> componentType = arrayClass.getComponentType();
            String componentName = componentType.getName();
            T array = (T) Array.newInstance(componentType, size);
            
            if("char".equals(componentName) || Character.class.getName().equals(componentName)) {
                for (int i = 0; i < size; i++) {
                    Array.set(array, i, (char)(start));
                    start += increment;
                }
            }else {
                for (int i = 0; i < size; i++) {
                    Array.set(array, i, start);
                    start += increment;
                }
            }
            return array;
        }
    
        public static void main(String[] args) {
            int[] dataInt = ArrayGenerator.random(int[].class, 20,10,99);
            System.out.print("random:	");
            for (int i = 0; i < dataInt.length; i++) {
                System.out.print(dataInt[i] + " ");
            }
            System.out.println();
            System.out.print("   seq:	");
            dataInt = ArrayGenerator.seq(int[].class, 20,20,1);
            for (int i = 0; i < dataInt.length; i++) {
                System.out.print(dataInt[i] + " ");
            }
            System.out.println();
            System.out.print("random:	");
            char[] dataChar = ArrayGenerator.random(char[].class, 26,65,90);
            for (int i = 0; i < dataChar.length; i++) {
                System.out.print(dataChar[i] + " ");
            }
            System.out.println();
            System.out.print("   seq:	");
            dataChar = ArrayGenerator.seq(char[].class, 26,65,1);
            for (int i = 0; i < dataChar.length; i++) {
                System.out.print(dataChar[i] + " ");
            }
        }
    }
  • 相关阅读:
    政务公开系统专栏首页的跨站攻击漏洞
    Spring+XFire WSSecurity安全认证开发感悟
    Appfuse使用中遇到的问题及解决方案
    How to get the rowid when insert the data to Oracle database
    How to configure CVS in IntelliJ IDEA
    localhost打不开 127.0.0.1可以打开,,,或 hosts 文件不起作用的解决方法
    ASp.net中Froms验证方式
    ASP.NET 页面执行顺序详解
    【转】防止用户通过后退按钮重复提交表单ASP中的response.Buffer,Response.Expires,Response.CacheControl
    页面事件(Init,Load,PreRender)执行顺序__简单总结
  • 原文地址:https://www.cnblogs.com/bsc2012/p/9220069.html
Copyright © 2011-2022 走看看