【测试工具集】随机号码生成:无需引用外部库,几秒生成100w随机号码的小工具

随机生成号码,java后端版本 。创建一个工具类CreatePhoneTools。

CreatePhoneTools

package com.coden.kantools.util.tools;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;

public class CreatePhoneTools {

    // 预设手机号码首位
    public static String[] FRISTNUMLIST = {"130", "131", "132", "145", "155", "156", "185", "186", "176", "175", "133", "149", "153", "180", "181", "189", "177", "134", "139", "147",
            "150", "152"};

    // 生成手机号码
    public static ArrayList<String> createPhoneNumber(String[] firstNumList, int len, boolean unrepeat) {
        ArrayList re = new ArrayList();
        String first;
        String last;
        for (int i = 0; i < len; i++) {
            // 随机获取预设号码首位的数据数组下标
            first = firstNumList[(int) Math.floor(Math.random() * firstNumList.length)];
            // 随机生成8位随机数
            last = String.valueOf((int) Math.floor(Math.random() * 100000000));
            //生成随机号不够8位,调用d补齐
            if (last.length() < 8) {
                last = d(last);
            }
            re.add(first + last);
        }

        // 是否去重
        if (unrepeat) {
            // 调用去重函数unrepeated
            re = unrepeated(re, firstNumList);
        }

        return re;
    }


    private static ArrayList unrepeated(List reArray, String[] firstNumList) {
        HashSet reSet = new HashSet(reArray);

        System.out.println("Now is " + reSet.size());
        if (reSet.size() < reArray.size()) {
            int diff = reArray.size() - reSet.size();
            reArray.clear();
            reArray.addAll(reSet);
            reArray.addAll(createPhoneNumber(firstNumList, diff, false));
            // System.out.println("this is " + diff + "___" + reArray.size());

            // 回归调用自身,以达到去重效果
            reArray = unrepeated(reArray, firstNumList);
        }

        return (ArrayList) reArray;
    }

    // 补位函数
    private static String d(String a) {
        String temp = null;
        for (int i = 8 - a.length(); i > 0; i--) {
            temp = String.valueOf((int) Math.floor(Math.random() * 10));
            a = a + temp;
        }
        return a;
    }


//    主函数测试
//    public static void main(String[] args) {
//        String[] s = {"158", "132", "166"};
//        ArrayList sss = (ArrayList) createPhoneNumber(s, 1000000, true);
//        System.out.println("最终结果 = " + new HashSet(sss).size());
//        System.out.println(sss);
//    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值