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

三个不重复的整数还有更简洁的方法嘛?

// 三个不重复的整数
        while (i == j)
        {
            j = random.nextInt(1000);
        }
        while (i == k || k == j)
        {
            k = random.nextInt(1000);
        }

        studentList.add(new Student(i + "", "Mike"));
        studentList.add(new Student(j + "", "Angela"));
        studentList.add(new Student(k + "", "Lucy"));
       



我感觉这个实现太长了,谁有更简洁的方法来实现

正在回答

9 回答

如图,加油http://img1.sycdn.imooc.com//5daa90790001cce508500438.jpg

0 回复 有任何疑惑可以回复我~
	/**
	* 3.对其他类型泛型的List进行排序,以Student为例。
	*/
	public void testSort3() {
	    List<Student> studentList = new ArrayList<Student>();
	    Random random = new Random();
	    
	    int f = random.nextInt(1000);
	    studentList.add(new Student(f + "", "Mike"));
	    
	    do
	        f = random.nextInt(1000);
	    while (studentList.contains(f));
	    studentList.add(new Student(f + "", "Zom"));
	    
	    do
	        f = random.nextInt(1000);
	    while (studentList.contains(f));
	    studentList.add(new Student(f + "", "Jason"));
	    
	    System.out.println("---------HOME----------");
	    for (Student student : studentList) {
	        System.out.println("学生:" + student.getId() + "," + student.getName());
	    }
	    
	    System.out.println("---------END----------");
	    Collections.sort(studentList);
	    for (Student student : studentList) {
	        System.out.println("学生:" + student.getId() + "," + student.getName());
	    }
	}
	
	不知道我这个算不算简单,
	使用了ArrayList的contains方法判断元素是否重复,
	元素重复返回true。


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

zooeaa

好像哪里不对
2019-05-25 回复 有任何疑惑可以回复我~
#2

qq_将就_2

mike的已经随机生成了数字,下面循环又随机生成,你这边有些问题吧
2019-09-03 回复 有任何疑惑可以回复我~

      public void testSort3(){

   List<Integer> integerList = new ArrayList<Integer>();

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

     Random random=new Random();

     Integer k;

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

       do{ k=random.nextInt(100);

     

     }while(integerList.contains(k));

    integerList.add(k);

      }

        

     studentList.add(new Student(integerList.get(0)+"","Mike"));

     studentList.add(new Student(integerList.get(1)+"","Angela"));

     studentList.add(new Student(integerList.get(2)+"","Lucy"));

   脑子笨,把testSort1合并进来用了

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

霸气小肆毛

老哥,我用你的方法,integerList.get(0)会提示The constructor Student(Integer, String) is undefined
2019-03-11 回复 有任何疑惑可以回复我~
#2

墨锦 回复 霸气小肆毛

你好老铁,请检查是否自己在项目中创建了学生类。
2019-03-14 回复 有任何疑惑可以回复我~
int i;
int j;
int k;
do {
     i = random.nextInt(10);
     j = random.nextInt(10);
     k = random.nextInt(10);
}while (i==j||i==k||j==k);

不知道我的这个是不是简单易懂呢

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

qq_将就_2

你这个分别定义,如果产生上百个,就不能用这个方式啊亲?
2019-09-03 回复 有任何疑惑可以回复我~
public void test(){
Set<Integer>set=new HashSet<Integer>();
Random random=new Random();
while(set.size()<3){
int i=random.nextInt(1000);
set.add(i);
}
这个就是利用set的不重复性来创建三个不重复的整数。
但是我不知道该怎么样才能将数字带入替换student的ID属性


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

或许可以利用hashSet不可重复的特性

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

while(set1.size()<3){

set1.add(random.nextInt(1000));

}

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

当然最好是不影响原来的代码的情况下。

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

举报

0/150
提交
取消

三个不重复的整数还有更简洁的方法嘛?

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