集合的工具类

集合操作的工具类:
1):Arrays类:

2):Collections类.

Arrays类:
在Collection接口中有一个方法叫toArray把集合转换为Object数组.
把集合转换为数组: Object[] arr = 集合对象.toArray();
数组也可以转换为集合(List集合):
public static List asList(T… a) 等价于public static List asList(T[] a).
这里写图片描述

通过Arrays.asList方法得到的List对象的长度是固定的,不能增,也不能减.
为什么: asList方法返回的ArrayList对象,不是java.util.ArrayList而是Arrays类中的内部类对象.
这里写图片描述
这里写图片描述


面试题:Collection和Collections的区别.

Collections类:封装了Set,List,Map的操作的工具方法.
获取空集对象(没有元素的集合,注意集合不为null):
这里写图片描述

常用的集合类:
HashSet/ArrayList/HashMap都是线程不安全的,在多线程环境下不安全.
在Collections类中有获取线程安全的集合方法:
List list = Collections.synchronizedList(new ArrayList());
当要做迭代的时候得使用synchronized.
synchronized(list) {
TODO

}

Set set = Collections.synchronizedSet(new HashSet());

Map map = Collections.synchronizedMap(new HashMap());

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

1)static void shuffle(List

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));  }  
}  

output:

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]  

Collections.shuffle()方法可用在游戏随机发牌中:
代码:

package com.test;import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;//线程安全  
public class Main {  public static void main(String[] args){  Character[] a ={'1','2','3','4','5','6','7','8','9','J','Q','K'};List<Character> list = new ArrayList<>(Arrays.asList(a));Collections.shuffle(list);for (Character string : list) {System.out.println(string);}}  
}  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker入门到精通开发指南(一文搞懂)

文章目录安装官方安装文档具体安装步骤1.卸载之前的版本(如果之前未用过忽略该步骤)2.安装相关依赖3.设置docker镜像4.安装docker安装latest版本指定版本安装5.启动docker6.查看docker版本7.运行一个docker hello world8.卸载docker9.配置阿里云镜像加速地址docker常用命令dock…

数据结构实验之串二:字符串匹配

题目描述 给定两个字符串string1和string2&#xff0c;判断string2是否为string1的子串。 输入 输入包含多组数据&#xff0c;每组测试数据包含两行&#xff0c;第一行代表string1&#xff0c;第二行代表string2&#xff0c;string1和string2中保证不出现空格。(string1和strin…

Unicode和Utf-8

很久很久以前&#xff0c;有一群人&#xff0c;他们决定用8个可以开合的晶体管来组合成不同的状态&#xff0c;以表示世界上的万物。他们看到8个开关状态是好的&#xff0c;于是他们把这称为”字节“。再后来&#xff0c;他们又做了一些可以处理这些字节的机器&#xff0c;机器…

如何向Maven中央仓库提交自己的Jar包(发布自己的Jar包到中央仓库)

文章目录注册账号GPG 安装安装生成密钥上传公钥Maven配置上传到Maven仓库修改项目的配置&#xff0c;填写基本信息执行编译命令登录网站配置发布项目中应用遇到的问题解决方法本文将介绍如何将自己的jar包发布至公共的中央仓库&#xff0c;通过maven方式进行引用 注册账号 注册…

数据结构实验之串三:KMP应用

题目描述 有n个小朋友&#xff0c;每个小朋友手里有一些糖块&#xff0c;现在这些小朋友排成一排&#xff0c;编号是由1到n。现在给出m个数&#xff0c;能不能唯一的确定一对值l和r(l < r)&#xff0c;使得这m个数刚好是第l个小朋友到第r个小朋友手里的糖块数&#xff1f;输…

C++读写锁

读写锁实际是一种特殊的自旋锁&#xff0c;它把对共享资源的访问者划分成读者和写者&#xff0c;读者只对共享资源进行读访问&#xff0c;写者则需要对共享资源进行写操作。 读写锁实际是一种特殊的自旋锁&#xff0c;它把对共享资源的访问者划分成读者和写者&#xff0c;读者只…

List和Set以及Map的选用

选用哪一种容器取决于每一种容器的存储特点以及当前业务的需求: List: 单一元素集合. 允许元素重复/记录元素的添加顺序. Set:单一元素集合. 不允许元素重复/不记录元素的添加顺序. 既要不重复,又要保证先后顺序:LinkedHashSet. Map: 双元素集合. 如果存储数据的时候,还得…

FastDFS文件服务器安装

文章目录环境准备使用的系统软件磁盘目录安装libfastcommon安装FastDFS安装fastdfs-nginx-module安装nginx单机部署tracker配置storage配置client测试配置nginx访问分布式部署tracker配置storage配置client测试配置nginx访问启动防火墙trackerstoragenginx检测集群说明配置文件…

学密码学一定得学程序

题目描述 曾经&#xff0c;ZYJ同学非常喜欢密码学。有一天&#xff0c;他发现了一个很长很长的字符串S1。他很好奇那代表着什么&#xff0c;于是神奇的WL给了他另一个字符串S2。但是很不幸的是&#xff0c;WL忘记跟他说是什么意思了。这个时候&#xff0c;ZYJ不得不求助与伟大的…

boost::shared_mutex

前一篇介绍的条件变量可以进行进程间通信&#xff0c;用来实现生产者/消费者模型。今天介绍的共享互斥量用来实现缓冲区读写模型&#xff0c;与生产者/消费者模型不同的地方是&#xff0c;消费者消费产品后&#xff0c;被消费的产品就不存在了&#xff0c;所以消费者线程也要互…

Map集合类

映射的数学解释: 设A、B是两个非空集合&#xff0c;如果存在一个法则f&#xff0c;使得对A中的每个元素a&#xff0c;按法则f&#xff0c;在B中有唯一确定的元素b与之对应&#xff0c;则称f为从A到B的映射&#xff0c;记作f&#xff1a;A→B。 映射关系(两个集合):A集合和B集…

github 国内加速镜像

GitHub 镜像访问 这里提供两个最常用的镜像地址&#xff08;别登录账号&#xff09;&#xff1a; https://github.com.cnpmjs.org https://hub.fastgit.org 也就是说上面的镜像就是一个克隆版的Github&#xff0c;你可以访问上面的镜像网站&#xff0c;网站的内容跟Github是完…

数据结构实验之二叉树二:遍历二叉树

题目描述 已知二叉树的一个按先序遍历输入的字符序列&#xff0c;如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并按中序和后序的方式遍历该二叉树。 输入 连续输入多组数据&#xff0c;每组数据输入一个长度小于50个字符的字符串。 输出 每组输入数据对应输出2行&#x…

Socket select模型

Windows socket select模型开发。 套接字select模型是一种比较常用的IO模型。利用该模型可以使Windows socket应用程序可以同时管理多个套接字。 使用select模型&#xff0c;可以使当执行操作的套接字满足可读可写条件时&#xff0c;给应用程序发送通知。收到这个通知后&#x…

Set实现类性能对比

Set接口的实现类: 共同的特点: 1):都不允许元素重复. 2):都不是线程安全的类. 解决方案:Set s Collections.synchronizedSet(Set对象); HashSet: 不保证元素的先后添加顺序. 底层才有的是哈希表算法,查询效率极高. 判断两个对象是否相等的规则: 1):equals比较为true. …

RSocket协议初识

文章目录前言RSocket是什么&#xff1f;RSocket设计目标是什么&#xff1f;RSocket与其他协议有什么区别&#xff1f;对比Http1.x对比Http2.x对比grpc对比TCP对比WebSocket结论RSocket适用于哪些场景&#xff1f;1、移动设备与服务器的连接。2、微服务场景。3、由于微服务和移动…

HugeGraph Server/Hubble安装使用

文章目录HugeGraph Server1 概述2 依赖2.1 安装JDK-1.83 部署3.1 下载tar包4 安装启动4.1 解压4.2 配置Hbase5 访问Server5.1 服务启动状态校验6 停止Server7 多图配置HugeGraph-Hubble 基于Web的可视化图形界面1.概述2.安装3 使用3.1创建图HugeGraph Server 1 概述 HugeGrap…

Socket模型

两种I/O模式 一.选择模型 二.异步选择 三.事件选择 四.重叠I/O模型 五.完成端口模型 五种I/O模型的比较 两种I/O模式 1、 两种I/O模式 阻塞模式&#xff1a;执行I/O操作完成前会一直进行等待&#xff0c;不会将控制权交给程序。套接字默认为阻塞模式。可以通过多线程技术进行处…

数据结构实验之二叉树的建立与遍历

题目描述 已知一个按先序序列输入的字符序列&#xff0c;如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树&#xff0c;最后求出叶子节点个数和二叉树深度。 输入 输入一个长度小于50个字符的字符串。输出 输出共有4行&#xff1a; 第1行输出…