zoukankan      html  css  js  c++  java
  • Java之随机生成各种类型的数据举例

    源码举例:

    package com.gxr.imybatisplus.utils;
    
    import com.gxr.imybatisplus.entity.TSampleE;
    
    import java.math.BigDecimal;
    import java.sql.Date;
    import java.sql.Timestamp;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;
    import java.util.UUID;
    import java.util.logging.Logger;
    
    public class GenObject {
        private static final Logger logger = Logger.getLogger(GenObject.class.getName());
    
        public static final String HANZI =
                "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方";
        public static final String GENDEL = "男女";
        public static final String[] SCHOOLS = {"清华大学", "北京大学", "南京大学", "上海交通大学", "东南大学", "华中科技大学", "武汉大学"};
        public static final String[] JOBS = {"商人", "学生", "文职人员", "程序员", "科学家", "医生", "律师", "司机"};
        public static final String REMARK = "随着公司项目的持续增多、实施工作持续推进,同时也暴露出很多数据从哪出、数据如何用等问题,"
                + "各项目都在按需定制功能和对接数据,这就给公司带来很大的支出成本";
    
    
        public static TSampleE genSampleObj(int id, String tableName) {
            TSampleE sample = new TSampleE();
            sample.setTableName(tableName);
            sample.setId(id);
            sample.setName(getRandomString(HANZI, 3));
            sample.setGender(getRandomString(GENDEL, 1));
    //        sample.setHeight(175.56F);
            sample.setHeight(getRandomFloat(150F, 200F));
    //        sample.setWeight(67.57);
            sample.setWeight(getRandomDouble(50, 120, 2));
            sample.setAge(getRandomInt(16, 100));
            int ageTime = sample.getAge() * 365 * 24 * 360;  // int类型的数据范围有限
            Date date = new Date((System.currentTimeMillis() / 1000 / 10 - ageTime) * 1000 * 10);
            sample.setBrithday(date);
    //        sample.setSchool("清华大学");
            sample.setSchool(getRandomItem(SCHOOLS));
    //        sample.setJob("商人");
            sample.setJob(getRandomItem(JOBS));
            sample.setRemarks(getUUID());
            sample.setCreateTime(new Timestamp(System.currentTimeMillis()));
            System.out.println("-- 生成数据: " + sample.toString());
            return sample;
        }
    
    
        public static List<TSampleE> getSampleList(int startNum, int num, String tableName) {
            List<TSampleE> list = new ArrayList<>();
            for (int i = 0; i < num; i++) {
                TSampleE sample = genSampleObj(startNum + i, tableName);
                list.add(sample);
            }
            return list;
        }
    
        /**
         * 根据字符串随机获取定长字符串
         */
        public static String getRandomString(String str, int length) {
    //        String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    //        String str = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方";
            Random random = new Random();
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < length; i++) {
                int number = random.nextInt(str.length());
                sb.append(str.charAt(number));
            }
            return sb.toString();
        }
    
        /**
         * 在字符串数组中随机获取一个值
         */
        public static String getRandomItem(String[] strs) {
            Random random = new Random();
            int number = 0;
            number = random.nextInt(strs.length);
            return strs[number];
        }
    
        /**
         * 随机生成一个范围内的整数
         */
        public static int getRandomInt(int min, int max) {
            if (max < min) {
                logger.fine("max < min");
                return max;
            } else if (min == max) {
                return min;
            }
            return (int) (min + Math.random() * (max - min));
        }
    
        /**
         * 在指定范围中,随机获取一个double数
         *
         * @param scale :小数点位数
         */
        public static double getRandomDouble(final double min, final double max, int scale) {
            if (max < min) {
                logger.fine("max < min");
                return max;
            } else if (min == max) {
                return min;
            }
            double d = min + ((max - min) * new Random().nextDouble());
            d = new BigDecimal(d).setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue();
            return d;
        }
    
        /**
         * 在指定范围中,随机获取一个float数
         */
        public static float getRandomFloat(final float min, final float max) {
            if (max < min) {
                logger.fine("max < min");
                return max;
            } else if (min == max) {
                return min;
            }
            return min + ((max - min) * new Random().nextFloat());
        }
    
        /**
         * 获取一个不重复的随机字符串
         */
        public static String getUUID() {
            UUID uuid = UUID.randomUUID();
            String str = uuid.toString();
    //        System.out.println("原始UUID: " + str);
            // 去掉"-"符号
            String temp = str.substring(0, 8) + str.substring(9, 13) + str.substring(14, 18) + str.substring(19, 23) + str.substring(24);
    //        System.out.println("去掉"-"符号: " + temp);
            return temp;
        }
    
    }
  • 相关阅读:
    路由网址这是mvc时代系列之三:网络路由与ASP.NET MVC生命周期(上)
    调用代码JCFXBL与WebView整合打造安卓应用服务平台
    服务安装Mongodb应用实战教程:windows下安装与安全策略配置
    方法选择Android从SD卡中选择图片的三种方法及自定义系统选择框标题的方法
    图层照片如何扣头发丝
    对象方法JavaScript脚本语言初解
    数据库方法django中ModelForm学习系列一~save方法
    团队位置《楚汉传奇》聊管理
    包查找*.so对应的rpm包
    现实世界的Windows Azure:就Metanga采访MetraTech公司CEO,Scott Swartz先生
  • 原文地址:https://www.cnblogs.com/gongxr/p/13937292.html
Copyright © 2011-2022 走看看