`
weitao1026
  • 浏览: 1053897 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多
import java.util.ArrayList; 
2.import java.util.List; 
3.import java.util.ListIterator; 
4.import java.util.Random; 
5.import java.util.RandomAccess; 
6. 
7.import org.junit.Test; 
8./**
9. * Collections随机排序
10. *
11. */ 
12.public class CollectionsShuffle { 
13. 
14.    private static Random r; 
15.    private static final int SHUFFLE_THRESHOLD = 5; 
16.     
17.    public static void shuffle(List<?> list) { 
18.        if (r == null) { 
19.            r = new Random(); 
20.        } 
21.        shuffle(list, r); 
22.    } 
23.     
24.    public static void shuffle(List<?> list, Random rnd) { 
25.        int size = list.size(); 
26.        if (size < SHUFFLE_THRESHOLD || list instanceof RandomAccess) { 
27.            for (int i = size; i > 1; i--) 
28.                swap(list, i - 1, rnd.nextInt(i)); 
29.        } else { 
30.            Object arr[] = list.toArray(); 
31.             
32.            for (int i = size; i > 1; i--) 
33.                swap(arr, i - 1, rnd.nextInt(i)); 
34.             
35.            ListIterator it = list.listIterator(); 
36.            for (int i = 0; i < arr.length; i++) { 
37.                it.next(); 
38.                it.set(arr[i]); 
39.            } 
40.        } 
41.    } 
42.     
43.    public static void swap(List<?> list, int i, int j) { 
44.        final List l = list; 
45.        l.set(i, l.set(j, l.get(i))); 
46.    } 
47.     
48.    private static void swap(Object[] arr, int i, int j) { 
49.        Object tmp = arr[i]; 
50.        arr[i] = arr[j]; 
51.        arr[j] = tmp; 
52.    } 
53.     
54.     
55.    //初始化List 
56.    public List<Integer> initList(){ 
57.        List<Integer> list = new ArrayList<Integer>(); 
58.        list.add(1); 
59.        list.add(2); 
60.        list.add(3); 
61.        list.add(4); 
62.        list.add(5); 
63.        list.add(6); 
64.        list.add(7); 
65.        list.add(8); 
66.        list.add(9); 
67.        return list; 
68.    } 
69.     
70.    //测试Collections随机排序 
71.    @Test 
72.    public void testShuffle(){ 
73.        List<Integer> list = initList(); 
74.        shuffle(list, new Random()); 
75.        for (Integer value : list) { 
76.            System.out.println(value); 
77.        } 
78.    } 
79.     
80.} 
分享到:
评论

相关推荐

    Collections 随机排序方法Shuffle源码说明

    在Java编程语言中,`Collections.shuffle()`方法是一个非常实用的工具,它用于对集合中的元素进行随机排序。这个方法在处理各种数据集时,比如游戏中打乱卡片顺序、抽奖程序或者任何需要随机化顺序的场景,都发挥着...

    C#对list列表进行随机排序的方法

    当需要对列表中的元素进行随机排序时,可以采用多种方法。这里我们重点介绍一种基于`Random`类的方法,如标题和描述中所述。这种方法通过创建一个随机数生成器并在循环中插入元素来实现随机排序的效果。 首先,我们...

    C#数组的随机排序源码

    本篇文章将详细探讨C#中实现数组的随机排序的方法,以及相关的编程技巧。 随机排序不同于常见的升序或降序排序,它是指数组中的元素被随机地重新排列,每个元素都有相等的概率出现在数组的任何位置。这种排序方式在...

    Collections

    Collections Collections 是 Java 中的一个集合工具类,提供了多种操作集合的...这个示例代码展示了如何使用 Collections 中的部分方法,包括反转列表、随机排序、互换元素、排序、二分查找、查找最大和最小元素等。

    java 使用Collections类对List的排序操作

    本文将深入探讨如何使用 `Collections` 类对 List 进行排序操作。 首先,让我们了解 `List` 排序的基本概念。在 Java 中,`List` 是接口,它继承了 `Collection` 接口,并添加了顺序相关的操作。常见的 `List` 实现...

    集合工具类Collections的基本应用

    例如,对整型ArrayList进行升序排序可以使用`Collections.sort(list)`。 2. **查找**: - `binarySearch(List&lt;? extends Comparable&lt;? super T&gt;&gt; list, T key)`: 对于已经排序的List,这个方法可以使用二分查找法...

    iesi.collections.dll

    或者包含了一些特定的算法实现,如排序、去重等。 在开发过程中,选择合适的iesi.collections.dll版本至关重要,因为不同的版本可能会影响程序的性能、稳定性和兼容性。开发者应当根据项目需求,对比不同版本的功能...

    Java Collections.pdf

    例如,Collections.sort()方法可以对List进行排序,而Collections.synchronizedXXX()方法则可以帮助我们创建线程安全的集合。 在实际开发中,选择合适的集合类型和方法至关重要。例如,当我们需要保持元素插入顺序...

    java collections

    8. **Collections工具类**: 提供了各种静态方法,如sort()进行排序,fill()填充元素,reverse()反转列表,以及copy()复制集合等。 9. **Concurrent Collections**: Java提供了线程安全的集合,如ConcurrentHashMap...

    APress - Java Collections

    - 使用`Collections`工具类中的静态方法来进行集合操作,如排序、查找最大/最小元素、反转列表等,这些方法通常比手动实现更高效且更简洁。 - 当处理大型数据集时,避免在循环中直接调用集合方法,而是尽可能将集合...

    【List、Set、数据结构、Collections】.pdf

    其中,Collections工具类可以用于实现单个集合的排序功能,通过使用Comparable接口或者Comparator接口来定义元素的排序规则。 常见的数据结构包括栈、队列、数组、链表和红黑树。栈是一种后进先出(LIFO)的数据...

    Java Collections Interview Questions.pdf

    Collections 工具类提供了一些常用的方法,例如 sort、shuffle、binarySearch 等,可以对集合进行排序、随机排序和二分搜索。 Collection 框架的层次结构 Java Collections 框架的层次结构如下所示: * ...

    了解Collection 和 Collections

    1. **排序**:`Collections.sort(List&lt;T&gt; list)`可以对一个`List`进行升序排序,如果元素实现了`Comparable`接口,或者提供了自定义的比较器`Comparator`。 2. **反转**:`Collections.reverse(List&lt;T&gt; list)`可以...

    java-collections-framework1016

    Java Collections Framework提供了一系列算法来操作集合,包括排序、搜索等功能。 - **`Collections.sort()`**:用于对列表进行排序。 - **`Collections.binarySearch()`**:用于在已排序的列表中进行二分搜索。 - ...

    手机端随机排列,适用大部分APP

    在大多数编程语言中,数组和列表都提供了方便的排序方法,比如Java的`Collections.shuffle()`和Python的`random.shuffle()`。 2. Fisher-Yates(Knuth)洗牌算法:这是一种常用的随机排列算法,它在线性时间复杂度...

    Java集合框架Collections原理及用法实例

    2. 随机排序:Collections提供了shuffle()方法来对列表进行随机排序。 3. 获取最值元素:Collections提供了max()方法来获取集合中的最大元素,可以根据自然顺序或指定的比较器进行比较。 Collections和Collection...

    Java Generics and Collections (Java泛型与集合)

    例如,ArrayList适合于频繁的随机访问,而LinkedList更适合于频繁的添加和删除操作。Map接口则用于存储键值对,HashMap提供快速查找,而TreeMap则按键排序。 书中可能涵盖了以下几个关键点: 1. **泛型的基本用法*...

    金陵科技学院软件院大二上Java高级1215Collections.docx

    在代码中,`Collections.shuffle(list)`将排序后的`list`随机排列。 4. **`Collections.swap(List&lt;T&gt; list, int i, int j)`**:此方法用于交换列表中指定位置的两个元素。在示例中,`Collections.swap(list, 2, 4)`...

    EE21 Feature Collections.docx

    - **随机点生成**:使用 `ee.FeatureCollection.randomPoints` 生成一个包含随机点的 Feature Collection。 - **屏幕绘制**:通过用户交互方式在地图上绘制特征,并将其转换成 Feature Collection。 #### 五、编辑 ...

    Java Collections 技术研讨会资料+(带源码)

    此外,Collections框架还包括实用工具类,如Collections类,它提供了一系列静态方法,用于操作集合,如排序、填充、反转等。还有EnumSet和EnumMap,专门为枚举类型设计的高效集合实现。 在本次研讨会的实例代码中,...

Global site tag (gtag.js) - Google Analytics