要求 :
   1. 字符串特别长,所以要效率高!
   2. 字符串里面只能出现汉字,并且只能是常用汉字!

解决方案 »

  1.   

    这个简单啊,字符集编码有个段是中文的,先随机在范围内生成int型,转成16进制的4位数,再转汉字就OK了。
      

  2.   

    就是用UNICODE中的中文段编码,就如2楼所说的方式转换趁汉字就可以了!
      

  3.   

    不知道这个可以么?仅采用 GB2312 一级字库,即 B0A1~D7FE 共计 3760 个字符。
    public class Test01 {
        
        public static void main(String[] args) {
            long t0, t1;
            t0 = System.currentTimeMillis();
            String str = getRandomString(2000000);
            t1 = System.currentTimeMillis();
            System.out.println(t1 - t0);
            System.out.println(str.length());
        }
        
        private static String getRandomString(int length) {
            if(length < 1) {
                return "";            
            }
            byte[] bys = new byte[length * 2];
            Random ran = new Random();
            for(int i = 0; i < length; i++) {
                bys[2 * i] = (byte)(ran.nextInt(40) + 176);
                bys[2 * i + 1] = (byte)(ran.nextInt(94) + 161);            
            } 
            return new String(bys);        
        }
    }我的机器比较烂,生 200 万字符串的时间是 600ms
      

  4.   

    恭喜 火龙果@宝家族  你的答案按完全符合要求,但是当将这2w汉字用System。out.print输出时机子将变得特卡,时间主要消耗在了输出函数上 !
      

  5.   

    如果你是在其他系统平台上运行的话,需要将return new String(bys);改成String s = null;
    try {
        s = new String(bys, "gbk");
    } catch (...) {
    }
    return s;我是在 Windows 上做的,默认就是 GBK 的。