ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java之随机生成各种类型的数据举例

2020-11-06 16:03:52  阅读:215  来源: 互联网

标签:Java String min int max 各种类型 sample 举例 return


源码举例:

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;
    }

}

 

标签:Java,String,min,int,max,各种类型,sample,举例,return
来源: https://www.cnblogs.com/gongxr/p/13937292.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有