Java如何随机取出集合中的元素

基本的思想就是用一个取值在0到size之间的随机数来随机生成集合的索引以便取出元素。


[java] view plain copy
  1. importjava.util.ArrayList;
  2. importjava.util.Random;
  3. publicclassTest{
  4. publicstaticvoidmain(String[]args){
  5. //存放内容的集合
  6. ArrayList<String>items=newArrayList<>();
  7. //存放乱序结果的集合
  8. ArrayList<String>result=newArrayList<>();
  9. //初始化存有内容的集合
  10. items.add("aaa");
  11. items.add("bbb");
  12. items.add("ccc");
  13. items.add("ddd");
  14. items.add("eee");
  15. items.add("fff");
  16. items.add("ggg");
  17. //初始化随机数
  18. Randomrand=newRandom();
  19. //取得集合的长度,for循环使用
  20. intsize=items.size();
  21. //遍历整个items数组
  22. for(inti=0;i<size;i++){
  23. //任意取一个0~size的整数,注意此处的items.size()是变化的,所以不能用前面的size会发生数组越界的异常
  24. intmyRand=rand.nextInt(items.size());
  25. //将取出的这个元素放到存放结果的集合中
  26. result.add(items.get(myRand));
  27. //从原始集合中删除该元素防止重复。注意,items数组大小发生了改变
  28. items.remove(myRand);
  29. }
  30. //便利输出结果
  31. for(inti=0;i<result.size();i++){
  32. System.out.print(result.get(i));
  33. }
  34. }
  35. }

再贴一段把字符串里面的内容每个字都打乱的。代码比较蠢蛋是很好懂:

[java] view plain copy
  1. importjava.util.ArrayList;
  2. importjava.util.Random;
  3. publicclassTest{
  4. publicstaticvoidmain(String[]args){
  5. //存放内容的集合
  6. ArrayList<String>items=newArrayList<>();
  7. //存放乱序结果的集合
  8. ArrayList<String>result=newArrayList<>();
  9. ArrayList<String>result1=newArrayList<>();
  10. //初始化存有内容的集合
  11. items.add("鸡腿");
  12. items.add("鸭蛋");
  13. items.add("鹅毛");
  14. items.add("驴尾巴");
  15. //初始化随机数
  16. Randomrand=newRandom();
  17. //取得集合的长度,for循环使用
  18. intsize=items.size();
  19. //遍历整个items数组
  20. for(inti=0;i<size;i++){
  21. StringmyString=items.get(i);
  22. String[]mys=myString.split("");
  23. for(Stringitem:mys){
  24. if(!item.equals("")){
  25. result.add(item);
  26. }
  27. }
  28. }
  29. //取得集合的长度,for循环使用
  30. size=result.size();
  31. //遍历整个items数组
  32. for(inti=0;i<size;i++){
  33. //任意取一个0~size的整数,注意此处的items.size()是变化的,所以不能用前面的size会发生数组越界的异常
  34. intmyRand=rand.nextInt(result.size());
  35. //将取出的这个元素放到存放结果的集合中
  36. result1.add(result.get(myRand));
  37. //从原始集合中删除该元素防止重复。注意,items数组大小发生了改变
  38. result.remove(myRand);
  39. }
  40. //便利输出结果
  41. for(inti=0;i<result1.size();i++){
  42. System.out.print(result1.get(i)+"+");
  43. }
  44. }
  45. }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值