java再谈集合随机
来源:互联网 发布:js获取url参数 编辑:程序博客网 时间:2024/06/05 18:10
之前有谈过集合的随机返回,由于项目的需要必须要在集合的第一位体现出随机,所以我们采用了下面的方法:
public class FirstIndexRandom {public static void main(String[] args){}private static List<Integer> getNewOrderList(List<Integer> value) { Random rand = new Random(); int listIndex = rand.nextInt(value.size()); List<Integer> returnList = new ArrayList<Integer>(); returnList.add(value.get(listIndex)); value.remove(listIndex); returnList.addAll(value); return returnList; }}
随机选择集合中元素的一个下标,和第一位做交换,产生一次伪随机。
其实jdk中Collections(集合工具类)中,提供了对整个集合做一个随机返回的方法:
Collections.shuffle(list);
该方法能够打散集合中元素的顺序
下面我们看一下shuffle中的源码:
public static void shuffle(List list1) { Random random = r; if(random == null) r = random = new Random(); shuffle(list1, random); }
public static void shuffle(List list1, Random random) { int i = list1.size(); if(i < 5 || (list1 instanceof RandomAccess)) { for(int j = i; j > 1; j--) swap(list1, j - 1, random.nextInt(j)); } else { Object aobj[] = list1.toArray(); for(int k = i; k > 1; k--) swap(aobj, k - 1, random.nextInt(k)); ListIterator listiterator = list1.listIterator(); for(int l = 0; l < aobj.length; l++) { listiterator.next(); listiterator.set(aobj[l]); } } }
在调用shuffle(List list)方法时,方法内部产生了一个随机数,接着调用下面的shuffle(list,random)方法。
这里实际上是运用了list中的set方法的特性,可以看一下jdk中的解释。
set方法可以替换指定下标元素,而本身会有一个返回值,就是被替换掉的元素。
详细的可以研究一下list中的set的方法。
- java再谈集合随机
- java 集合 随机素数
- Java如何随机取出集合中的元素
- java集合类之随机访问和顺序访问
- java怎样随机选取一个集合里面的数
- java集合类之随机访问和顺序访问
- java List集合练习题 产生长度随机的字符串,串中每一个字符都是随机的
- Java中 Random随机用法与List集合配套使用实现随机点名
- java随机返回-----随机
- Java 随机
- Java随机 Java真随机
- 集合的伪随机遍历
- 对一个集合随机排序
- Java中对List集合内的元素进行顺序、倒序、随机排序的示例代码
- Java中随机抽取List集合中特定个数的子项
- Java中对List集合内的元素进行顺序、倒序、随机排序的示例代码
- [Java]实用工具类库java.util(总纲、日期类、日历类、随机类、向量、栈、哈希表、位集合类)
- 从集合中随机选出n项
- ASP.NET面试题
- iphone开发之Objective-c语法之字符串
- C++, 想要使用string ,必须要用命名空间 std
- Khan公开课 - 概率学习笔记(二)无顺序独立事件、数学符号、Bayes's Law、非公平概率计算
- Android源码目标结构
- java再谈集合随机
- hash有关
- ubuntu下ftp服务器的配置
- vs2010中c++编译运行后屏幕一闪而过解决方法(控制台)
- 别指望靠工资发财
- 编程练习2
- A simple JNI example
- gcc: collect2 cannot find 'ld'
- java map 遍历的三种简单的办法