手记

字符随机数排序

package edu.eurasia.list.collection;

import java.util.*;

/**
 * 类名: <br>
 * 功能:(字符随机数排序)<br>
 * 作者:admin <br>
 * 日期:2018/7/16
 */
public class CollectionTest {

    /**
     * 对Integer泛型进行排序
     */
    public void testSort1(){
        List<Integer> integerList = new ArrayList<>();
        //插入随机数
        Random random = new Random();
        Integer k;
        for (int i = 0; i < 10; i++) {
            //确保不重复
            do {
                k = random.nextInt(100);
            } while (integerList.contains(k));

            integerList.add(k);
            System.out.println("成功添加整数" + k);
        }
        System.out.println("----------排序前---------");
        for (Integer integer:integerList
             ) {
            System.out.println("元素" + integer);
        }
        Collections.sort(integerList);
        System.out.println("----------排序后---------");
        for (Integer integer: integerList
             ) {
            System.out.println("元素" + integer);

        }

    }

    /**
     * 对String泛型进行排序
     *
     */
    public void testSort2(){
        List<String> stringList = new ArrayList<>();
        stringList.add("microsoft");
        stringList.add("google");
        stringList.add("lenovo");
        System.out.println("-------------排序前----------");
        for (String string:stringList
             ) {
            System.out.println("元素" + string);
        }
        Collections.sort(stringList);
        System.out.println("-------------排序后----------");
        for (String string:stringList
                ) {
            System.out.println("元素" + string);
        }
    }

    /**
     * 创建完List<String>之后,往其中添加10条随机字符串
     * 每条字符串的长度为10以内的随机整数
     * 每条字符串的每个字符都为随机生成的字符,字符可以重复
     * 每条随机字符串不可重复
     *
     */
    public void homework(){
        List<String> stringList = new ArrayList<>();
        int length = 10;
        String str = "zxcvbnmlkjhgfdsaqwertyuiopQWERTYUIOPASDFGHJKLZXCVBNM1234567890";
        for (int i =0;i<length;i++){
            StringBuffer sb = new StringBuffer();
        do {
            //生成随机数
            Random random = new Random();

            for (int j = 0;j<random.nextInt(9)+1;j++){
                int number = random.nextInt(62);
                sb.append(str.charAt(number));
            }

        } while (stringList.contains(sb.toString()));
        stringList.add(sb.toString());
            System.out.println("成功添加字符串" + sb.toString());
        }
        System.out.println("-----------排序前-----------");
        for (String string:stringList
             ) {
            System.out.println("元素" + string);
        }
        Collections.sort(stringList);
        System.out.println("-----------排序后-----------");
        for (String string:stringList
                ) {
            System.out.println("元素" + string);
        }
    }
    public static void main(String[] args){
        CollectionTest ct = new CollectionTest();
//        ct.testSort1();
//          ct.testSort2();
          ct.homework();
    }

}


4人推荐
随时随地看视频
慕课网APP

热门评论

带参的nextInt(int x)则会生成一个范围在0~x(不包含X)内的任意正整数,取值为[0,x)

这里的9要改成10

 for (int j = 0;j<random.nextInt(10)+1;j++){

                int number = random.nextInt(62);

                sb.append(str.charAt(number));

            }



如果列表中已经包含该字符串(即随机生成了一个重复的字符串),满足while循环,继续生成随机数,向StringBuilder中添加字符,但是StringBuilder中还有原来随机生成的重复字符串,故循环再加上字符,就会超过规定的字符长度。您看看是这样吗?

查看全部评论