iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java Collections.shuffle()方法案例详解
  • 378
分享到

Java Collections.shuffle()方法案例详解

2024-04-02 19:04:59 378人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

Java.util.Collections类下有一个静态的shuffle()方法,如下: 1)static void shuffle(List<?> list)

Java.util.Collections类下有一个静态的shuffle()方法,如下:

1)static void shuffle(List<?> list)  使用默认随机源对列表进行置换,所有置换发生的可能性都是大致相等的。

2)static void shuffle(List<?> list, Random rand) 使用指定的随机源对指定列表进行置换,所有置换发生的可能性都是大致相等的,假定随机源是公平的。

通俗一点的说,就像洗牌一样,随机打乱原来的顺序。

注意:如果给定一个整型数组,用Arrays.asList()方法将其转化为一个集合类,有两种途径:

1)用List<Integer> list=ArrayList(Arrays.asList(ia)),用shuffle()打乱不会改变底层数组的顺序。

2)用List<Integer> list=Arrays.aslist(ia),然后用shuffle()打乱会改变底层数组的顺序。代码例子如下:


package ahu;
import java.util.*;
 
public class Modify {
	public static void main(String[] args){
		Random rand=new Random(47);
		Integer[] ia={0,1,2,3,4,5,6,7,8,9};
		List<Integer> list=new ArrayList<Integer>(Arrays.asList(ia));
		System.out.println("Before shufflig: "+list);
		Collections.shuffle(list,rand);
		System.out.println("After shuffling: "+list);
		System.out.println("array: "+Arrays.toString(ia));
		List<Integer> list1=Arrays.asList(ia);
		System.out.println("Before shuffling: "+list1);
		Collections.shuffle(list1,rand);
		System.out.println("After shuffling: "+list1);
		System.out.println("array: "+Arrays.toString(ia));
		
	}
}

运行结果如下:

Before shufflig: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

After shuffling: [3, 5, 2, 0, 7, 6, 1, 4, 9, 8]

array: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Before shuffling: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

After shuffling: [8, 0, 5, 2, 6, 1, 4, 9, 3, 7]

array: [8, 0, 5, 2, 6, 1, 4, 9, 3, 7]

在第一种情况中,Arrays.asList()的输出被传递给了ArrayList()的构造器,这将创建一个引用ia的元素的ArrayList,因此打乱这些引用不会修改该数组。 但是,如果直接使用Arrays.asList(ia)的结果, 这种打乱就会修改ia的顺序。意识到Arrays.asList()产生的List对象会使用底层数组作为其物理实现是很重要的。 只要你执行的操作 会修改这个List,并且你不想原来的数组被修改,那么你就应该在另一个容器中创建一个副本。

到此这篇关于Java Collections.shuffle()方法案例详解的文章就介绍到这了,更多相关Java Collections.shuffle()方法内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java Collections.shuffle()方法案例详解

本文链接: https://www.lsjlt.com/news/133002.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java Collections.shuffle()方法案例详解
    Java.util.Collections类下有一个静态的shuffle()方法,如下: 1)static void shuffle(List<?> list) ...
    99+
    2022-11-12
  • Java getParameter方法案例详解
    html核心代码 <body> <font size = "5" color ="blue">圆面积计算</font><br&...
    99+
    2022-11-12
  • Java Collections.shuffle方法怎么调用
    Java中的Collections类提供了shuffle方法来打乱集合中的元素顺序。要调用shuffle方法,需要按照以下步骤进行操...
    99+
    2023-09-12
    Java
  • Java BigDecimal中divide方法案例详解
    1、首先说一下用法,BigDecimal中的divide主要就是用来做除法的运算。其中有这么一个方法. public BigDecimal divide(BigDecimal d...
    99+
    2022-11-12
  • Java Scanner用法案例详解
    一、Scanner类简介       Java 5添加了java.util.Scanner类,这是一个用于扫描输入文本的新的实用程序。它是以前...
    99+
    2022-11-12
  • Java SPI用法案例详解
     1.什么是SPI      SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的接...
    99+
    2022-11-12
  • Java DFA算法案例详解
    1.背景 项目中需要对敏感词做一个过滤,首先有几个方案可以选择: 直接将敏感词组织成String后,利用indexOf方法来查询。 传统的敏感词入库后SQL查询。 ...
    99+
    2022-11-12
  • Java ConcurrentHashMap用法案例详解
    一、概念 哈希算法(hash algorithm):是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。 哈希表(hash table):根据设定的哈希函数H(k...
    99+
    2022-11-12
  • Java ArrayAdapter用法案例详解
          拖延症最可怕的地方就是:就算自己这边没有拖延,但对方也会拖延,进而导致自己这边也开始拖延起来!现在这个项目我这边已经是完...
    99+
    2022-11-12
  • Java DatabaseMetaData用法案例详解
    目录一 . 得到这个对象的实例二. 方法getTables的用法三. 方法getColumns的用法四、方法getPrimaryKeys的用法五、方法.getTypeInfo()的用...
    99+
    2022-11-12
  • Python rindex()方法案例详解
    描述 Python rindex() 方法返回子字符串最后一次出现在字符串中的索引位置,该方法与 rfind() 方法一样,只不过如果子字符串不在字符串中会报一个...
    99+
    2022-11-12
  • C++ random_shuffle()方法案例详解
    假设你需要指定范围内的随机数,传统的方法是使用ANSI C的函数random(),然后格式化结果以便结果是落在指定的范围内。但是,使用这个方法至少有两个缺点。 首先,做格式化时,结果...
    99+
    2022-11-12
  • C# DateTime.Compare()方法案例详解
    C#中的DateTime.Compare()方法用于比较两个DateTime实例。它返回一个整数值, <0-如果date1早于date2 0-如果date1与...
    99+
    2022-11-12
  • C# InitializeComponent()方法案例详解
    在每一个窗体生成的时候,都会针对于当前的窗体定义InitializeComponent()方法,该方法实际上是由系统生成的对于窗体界面的定义方法。 //位于.cs文件之中的Ini...
    99+
    2022-11-12
  • Java SpringBoot Validation用法案例详解
    目录constraints分类对象集成constraints示例SpringBoot集成自动验证集成maven依赖验证RequestBody、Form对象参数验证简单参数验证指定分组...
    99+
    2022-11-12
  • Java之Class.forName()用法案例详解
    Class.forName()主要功能 Class.forName(xxx.xx.xx)返回的是一个类, Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载...
    99+
    2022-11-12
  • js中getBoundingClientRect( )方法案例详解
    一.getBoundingClientRect() 解析 getBoundingClientRect() 方法返回元素的大小及其相对于视口的位置。 语法 rectObject ...
    99+
    2022-11-12
  • C++ pair方法与vector方法案例详解
    一,pair方法 类模板:template <class T1, class T2> struct pair 参数:T1是第一个值的数据类型,T2是第二个值的数据类型。 ...
    99+
    2022-11-12
  • Java WeakHashMap案例详解
    WeakHashMap 继承于AbstractMap,实现了Map接口。 和HashMap一样,WeakHashMap 也是一个散列表,它存储的内容也是键值对(key-value)映...
    99+
    2022-11-12
  • Java Assert.assertEquals案例详解
    junit.framework包下的Assert提供了多个断言方法. 主用于比较测试传递进去的两个参数. Assert.assertEquals();及其重载方法: 1. 如果两者一...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作