自己参考着写的《随机生成不重复字符串》代码

来源:6-5 应用 Collections.sort() 实现 List 排序

司空曙

2015-09-01 10:39

public static void  testSort3(){
   List<String> list3 = new ArrayList<String>();//储存所有字符串
   Set<String>  setString = new HashSet<String>();//用于选择不同的字符串
   String newst = new String();                   //储存当前得到的字符串
   
   Random  rand = new Random();       //产生10以内随机数。用于字符串控制长度
   StringBuffer sb= new StringBuffer();   // 可以变动的字符型
   StringBuffer  buf = new StringBuffer("abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");           // 字符组合的基
   
     int m = 0;              //m控制字符串的数量
     while (m<10){
    do{
	 //字符串长度在10以内。达到该长度前进行for循环
    for(int i = 0; i < rand.nextInt(10); i ++){
        //定义一个变量,取得buf字符组合基的长度
	 int num = buf.length();
//往空的字符串 sb 的末端加入单个元素。该元素从buf组合基中随机取得		
       sb.append(buf.charAt(rand.nextInt(num)));
		                       }//do结束
	//将sb可变动类型转换成字符串型	                       		
           newst= sb.toString();
           //若setString中已包含该对象,重新进行do操作
	 }while (setString.contains(newst));
	 //往Set接口下的setString中添加该对象
	    setString.add(newst);
	   //往List接口下的list3中添加该字符串 
	  list3.add(newst);	  
	 System.out.println("成功添加:"+newst);	
	 
	 //可变更类型的  sb 字符串 清空,用于下一次操作
	 sb= new StringBuffer();
		 m++;
		 }
		 System.out.println("============排序前==========");
			for (String in : list3){
				
				System.out.println("元素:"+ in);
			}
		System.out.println("----------------------排序后---------------------");
			Collections.sort(list3);
	                       for (String in : list3){
				
				System.out.println("元素:"+ in);
			}
		 
	}

自己写的代码。如有不足请指教一二。十分感谢!

写回答 关注

1回答

  • 慕容6889247
    2015-12-29 19:08:53
    //生成字符表
    public void generatorAlphabeta(List<Character> list,char st,char ed){
    		for(char c= st;c<=ed;c++){
    			list.add(c);
    		}
    	}
    	
    public void testSort2(){
    		List<String> stringList = new ArrayList<String>();
    		List<Character> subList = new ArrayList<Character>();
    		
    		generatorAlphabeta(subList, 'a', 'z');//将a-z加入字符表
    		generatorAlphabeta(subList, 'A', 'Z');//将A-Z加入字符表
    		generatorAlphabeta(subList, '0', '9');//将0-9加入字符表
    		
    		//随机生成字符串
    		String str = "";
    		Random random = new Random();
    		for (int j = 0; j < 10; j++) {
    			str = "";
    			while(true){
    			for (int i = 0; i < random.nextInt(10); i++) {
    				double randomNum = 0.0;
    				int index = 0;
    					index = random.nextInt(62);
    					str = str + subList.get(index);
    				}//生成小于10长度的字符串
    			if(!str.equals("") && !stringList.contains(str)) break;//不为空且不重复就跳出字符串生成
    			}
    			stringList.add(str);//10条字符串
    		}
    				
    		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);
    		}
    	}


Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409769 学习 · 4543 问题

查看课程

相似问题