sinat_25136209
sinat_bond
采纳率39.6%
2017-01-17 17:15

java中的一个小问题

已采纳

存10个20以内的随机数,不用hashset,只用arraylist集合。为啥还能得出相同的元素?图片

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

14条回答

  • bdmh bdmh 4年前

    你应该在add之前做判断,你现在是做了判断,但是又取了值,还可能重复,或者你用map

    点赞 1 评论 复制链接分享
  • marco_0631 marco_0631 4年前

    首先,随机生成是有可能生成重复数字的。而list本身就是可以存储重复数据的集合。要是想不重复,要先在list.add()前添加重复判断。另,简易使用set,这样就不会重复了

    点赞 3 评论 复制链接分享
  • miaoch miaoch 4年前

    if contain 应该改成 while contain
    因为你第一次可能重复
    你第二次也可能重复
    要直到不重复 才可以

    点赞 1 评论 复制链接分享
  • sadhy sadhy 4年前

    list集合特点是有序可重复

    点赞 1 评论 复制链接分享
  • u012006909 艺匠之美 4年前

    list是有序且可重复,相当于是数组

    点赞 评论 复制链接分享
  • sun1021873926 夕阳雨晴 4年前

    需要正确认识List和Set的异同点。http://blog.csdn.net/speedme/article/details/22398395

    点赞 评论 复制链接分享
  • Royal_lr Royal_lr 4年前

    直接采用set就不会重复了,,

    点赞 评论 复制链接分享
  • ProgramMonkey_z 雨天独行 4年前

    list中可以存相同的元素因为对应的索引不同。随机数是可以重复的,然而你只判断了一次是否重复。改成while(aa.contains(bb)){bb = rd.nextInt(20) + 1;}。

    点赞 评论 复制链接分享
  • Azi_mi _YOLO_ 4年前

    几率不大的情况你都碰上了。大多数情况下,你这个代码是不会有重复数据出现,但是代码本身没有做到100%的去重处理,你可以自己再认真思考一下。

    点赞 评论 复制链接分享
  • weixin_36842484 weixin_36842484 4年前

    再测试一下哈 继续忽略

    点赞 评论 复制链接分享
  • weixin_36842484 weixin_36842484 4年前

    我这是测试的 忽略我

    点赞 评论 复制链接分享
  • Never_Heartache Never_Heartache 4年前

    有重复是你在random生成随机数的时候产生的,而arraylist又可以存放重复的数据,所以就有了你的这个结果。

    点赞 评论 复制链接分享
  • luoshi007 luoshi007 4年前

    list:有序可重复
    set:无需不重复

    点赞 评论 复制链接分享
  • chf1142152101 胖蔡 4年前

    都说是随机的,你又没做随机重复处理,有重复的很正常

    点赞 评论 复制链接分享