为了账号安全,请及时绑定邮箱和手机立即绑定

完善随机生成不重复学生ID并排序

public class CollectionSort { 
 public void sort3(){
		
 	   List<Student> studentList = new ArrayList<Student>();
 	   List<Integer> i = new ArrayList<Integer>();
 	   Random r = new Random();
 	   int n;
 	   
 	   for(int j=0;j<3;j++){
 		  
 		   do{
 			   n = r.nextInt(1000);
 		   }while(i.contains(n));
 		   i.add(n);
 		   
 	   }
 	   
 	   
 	   studentList.add(new Student(i.get(0).toString(),"小明"));
 	   studentList.add(new Student(i.get(1).toString(),"小红"));
 	   studentList.add(new Student(i.get(2).toString(),"小刚"));
 	   System.out.println("---------排序前----------");
 	   for (Student student : studentList) {
		System.out.println("学生:"+student.id+"."+student.name);
	} 
 	   Collections.sort(studentList);
 	   System.out.println("---------排序后----------");
 	  for (Student student : studentList) {
 			System.out.println("学生:"+student.id+"."+student.name);
 		}
 	}
 		public static void main(String[] args) {
		CollectionSort cs = new CollectionSort();

		cs.sort3();
	}

}
多多指教!


正在回答

6 回答

好想法,比我想的要简单

0 回复 有任何疑惑可以回复我~

学到了,你那种方法也不错

0 回复 有任何疑惑可以回复我~
public void testSort3(){
		List<Student> studentList =new ArrayList<Student>();
		Random random =new Random();
		Integer a = 10001;

		Integer[] readNums = new Integer[3];
		for(int i=0;i<3;i++){

			do{k=random.nextInt(1000);

			}while( a==k);
			a=k;
			readNums[i]=k;
		}
		studentList.add(new Student(readNums[0]+"","小明"));
		studentList.add(new Student(readNums[1]+"","小红"));
		studentList.add(new Student(readNums[2]+"","小兰"));
		System.out.println("--------排列前-----------");
		for (Student student : studentList) {
			System.out.println("学生:"+student.name);
		}
		Collections.sort(studentList);
		
	}


0 回复 有任何疑惑可以回复我~
#1

暮女神

从哪里冒出来的k?...好吧,应该是没粘贴到 但是弱弱地问句: 你这种方法还有可能重复吧?do.. while循环里为啥要判断a= =k呢?你这样不就成了判断每次产生的k和前一次产生的k是否相等了吗? 个人见解...
2017-02-10 回复 有任何疑惑可以回复我~
#2

不看6324不混吃等死 回复 暮女神

K没问题!的确如果这样的话可能照成第1个K和第3个K相同
2017-02-11 回复 有任何疑惑可以回复我~
#3

不看6324不混吃等死 回复 暮女神

我找了一个方法 Integer[] readNums = new Integer[3]; for(int i=0;i<3;i++){ do{k=random.nextInt(1000); }while(Arrays.asList(readNums).contains(k)); readNums[i]=k; }
2017-02-11 回复 有任何疑惑可以回复我~
#4

不看6324不混吃等死 回复 暮女神

Arrays.asList(readNums).contains(k)检测数组是否包含k 返回回的是true
2017-02-11 回复 有任何疑惑可以回复我~
查看1条回复

public void testSort3(){

List<Student> studentList =new ArrayList<Student>();

Random random =new Random();

Integer a = 10001;


Integer[] readNums = new Integer[3];

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


do{k=random.nextInt(1000);


}while( a==k);

a=k;


readNums[i]=k;

}

studentList.add(new Student(readNums[0]+"","小明"));

studentList.add(new Student(readNums[1]+"","小红"));

studentList.add(new Student(readNums[2]+"","小兰"));

System.out.println("--------排列前-----------");

for (Student student : studentList) {

System.out.println("学生:"+student.name);

}

Collections.sort(studentList);

}



0 回复 有任何疑惑可以回复我~

不知有没有更简单的方法来实现


0 回复 有任何疑惑可以回复我~

学习了。感觉对于对象引用名称的定义要更详细点。一个i,一个n感觉不太好。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

完善随机生成不重复学生ID并排序

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信