我写出来的东西一开始能输出些乱码或符号。
之后修改了一些BUG后现在彻底没东西了是为什么。上代码和图片
package com.imooc.collection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class CollectionsTest {
public void testSort3() {
List<String> stringList2=new ArrayList<String>();
Random random=new Random();
String str[]=new String [10];
for(int i=0;i<10;i++){
do {
int n=random.nextInt(10);
char zifu[]=new char[10];
for(int a=0;a<n;a++) {
int shu=random.nextInt(62);
if(shu<26) {
zifu[a]=(char)(shu+65);
}else if(shu<52) {
zifu[a]=(char)(shu+71);
}else {
zifu[a]=(char)(shu-4);
}
}
str[i]=Arrays.toString(zifu);
zifu=null;
}while(stringList2.contains(str[i]));
}
System.out.println("-------排序前------");
for(String string:stringList2) {
System.out.println("元素:"+string);
}
Collections.sort(stringList2);
System.out.println("-------排序后------");
for(String string:stringList2) {
System.out.println("元素:"+string);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
CollectionsTest ct=new CollectionsTest();
ct.testSort3();
}
}
你是来搞笑的吗?你遍历stringList2,而你new了一个List对象后,根本就没有add添加任何属性,怎么可能会有数据?
附运行结果图
public static void main(String[] args) { Random random = new Random(); List<String> list = new ArrayList<String>(); // 定义一个包含数字字母(大小写)的长字符串用于程序进行随机生成 String str = "951abcdefGhi753JKLMNopq46RSTuvwxY82Z"; // 用于接收随机生成的字符串 StringBuffer stringBuffer; for(int i = 0; i < 10; i++) { do { stringBuffer = new StringBuffer(); // 通过for循环生成字符串的随机长度(+1是为了避免随机数为0导致生成空字符串) for(int j = 0; j < random.nextInt(9)+1; j++) { //从str中获取一个随机的字符追加到stringBuffer stringBuffer.append(str.charAt(random.nextInt(str.length()))); } // 确保当前字符串在list中不存在 }while (list.contains(stringBuffer.toString())); // 将生成的字符串添加到list list.add(stringBuffer.toString()); } System.out.println("排序前:"); list.forEach(System.out::println); Collections.sort(list); System.out.println("排序后:"); list.forEach(System.out::println); }
解决了。我竟然没有在其中用add把str[i]加进去