问答详情
源自:6-5 应用 Collections.sort() 实现 List 排序

交一下作业,请求大佬给给意见

/**	* 创建产生随机字符串的方法	
* @param args	
*/	
public String GetRandomString(int length) {		
    StringBuffer string=new StringBuffer();		
    String base="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";			
    Random r=new Random();		
    int k;  
    int l=base.length();		
    for(int i=0;i<length;i++) {
	    k=r.nextInt(l);
	    string.append(base.charAt(k));
    }			
    return string.toString();	
}		
/**	
* 创建String泛型List,并进行排序	
* @param args	
*/	
public void TestRandomStringSort() {
	List<String> stringlist=new ArrayList<String>();		
	Random le=new Random();		
	String string;		
	int length=0;		
	for(int i=0;i<10;i++) {			
	    do{				
	    length=le.nextInt(10);		//随机产生整数作为字符串长度,长度不为0	
	    }while(length==0);	
						
	    do {				
	    string=GetRandomString(length);	    //调用随机产生字符串的方法	
	    }while(stringlist.contains(string));    //字符串不能重复			
	    stringlist.add(string);								
    }		
    
    System.out.println("--------------排序前--------------");		
    for (String stringl : stringlist) {			
        System.out.println("有字符串:"+stringl);		
    }		
    Collections.sort(stringlist);		
    System.out.println("--------------排序后--------------");		
    for (String stringl : stringlist) {			
        System.out.println("有字符串:"+stringl);		
        }			
}


提问者:慕标407132 2018-11-27 17:32

个回答

  • qq_Takeiteasy_2
    2019-01-03 15:33:06

    都是一样刷课,为何你如此优秀。。想不到想不到。。

  • qq_Takeiteasy_2
    2019-01-03 15:26:16


     /**
      * 随机生成10个字符串:这些字符串长度可以不同,字符可以重复,但是不能有两个相同的字符串 然后对随机生成的10个字符串排序,要求输出排序前与排序后的列表序列
      */
     public void StringSort2() {
      Random r = new Random();
      int[] pool = new int[3];
      
      for (int j = 0; j < 10; j++) {
       String str = new String();
       do {
        /* 长度随机 */
        int lengthRand = r.nextInt(10) + 1; // 产生1-10(包括10)之间的随机数
        /* 字符随机 */
        for (int i = 0; i < lengthRand; i++) {
         int a = (int)(r.nextDouble() * 26) + 97; // 小写字母ASCII码值序列
         int b = (int)(r.nextDouble() * 26) + 65; // 大写字母ASCII码值序列
         int c = r.nextInt(10); // 0-9的数字
         pool[0] = a;
         pool[1] = b;
         pool[2] = c;
         int temp = pool[r.nextInt(3)];
         if (temp > 9) {
          char temps = (char) temp;
          str = str+temps;
         } else {
          str = str+temp;
         }

        }
       } while (stringSort.contains(str));
       stringSort.add(str);
       System.out.println("添加了字符串"+str);
      }
      System.out.println("排序前:");
      for (String str2:stringSort) {
       System.out.println(str2);
      }
      Collections.sort(stringSort);
      System.out.println("排序后:");
      for (String str2:stringSort) {
       System.out.println(str2);
      }
     }

     public static void main(String[] args) {
      CollectionsTest test = new CollectionsTest();
      // test.addSort1();
      // test.StringSort1();
      test.StringSort2();

     }

    }


  • 丶年少
    2018-12-16 21:09:41

    public class Text {

    String num= "123456789qwertyuiopasdfgh"

    + "jklasdfghjklzxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM";

    public List<String> ch;

    public Text() {

    ch=new ArrayList<String>();

    }

    public void add() {

    int n=num.length(); //字符长度

    Random a=new Random();

    for(int i=0;i<10;i++) {

    String at="";

    String aa=new String();

    do{

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

    at=num.charAt(a.nextInt(n))+"";

    aa+=at;

    }

    }while(ch.contains(aa));

    ch.add(aa);

    }

    Collections.sort(ch);

    for(String aa:ch) {

    System.out.println(aa);

    }

    }


  • qq_慕盖茨3583465
    2018-12-12 17:34:16

    完美,nice

  • 慕的地2578749
    2018-11-30 15:59:31

    亲,同是新人,我看着你的代码没有什么问题。