Java集合框架 工具类Collections

Collections是一个类,容器的工具类,就如同Arrays是数组的工具类

步骤 1 : 反转

reverse 使List中的数据发生翻转

package collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List; public class TestCollection {
public static void main(String[] args) {
//初始化集合numbers
List<Integer> numbers = new ArrayList<>(); for (int i = 0; i < 10; i++) {
numbers.add(i);
} System.out.println("集合中的数据:");
System.out.println(numbers); Collections.reverse(numbers); System.out.println("翻转后集合中的数据:");
System.out.println(numbers); }
}

步骤 2 : 混淆

shuffle 混淆List中数据的顺序

package collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List; public class TestCollection {
public static void main(String[] args) {
//初始化集合numbers
List<Integer> numbers = new ArrayList<>(); for (int i = 0; i < 10; i++) {
numbers.add(i);
} System.out.println("集合中的数据:");
System.out.println(numbers); Collections.shuffle(numbers); System.out.println("混淆后集合中的数据:");
System.out.println(numbers); }
}

步骤 3 : 排序

sort 对List中的数据进行排序

package collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List; public class TestCollection {
public static void main(String[] args) {
//初始化集合numbers
List<Integer> numbers = new ArrayList<>(); for (int i = 0; i < 10; i++) {
numbers.add(i);
} System.out.println("集合中的数据:");
System.out.println(numbers); Collections.shuffle(numbers);
System.out.println("混淆后集合中的数据:");
System.out.println(numbers); Collections.sort(numbers);
System.out.println("排序后集合中的数据:");
System.out.println(numbers); }
}

步骤 4 : 交换

swap 交换两个数据的位置

package collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List; public class TestCollection {
public static void main(String[] args) {
//初始化集合numbers
List<Integer> numbers = new ArrayList<>(); for (int i = 0; i < 10; i++) {
numbers.add(i);
} System.out.println("集合中的数据:");
System.out.println(numbers); Collections.swap(numbers,0,5);
System.out.println("交换0和5下标的数据后,集合中的数据:");
System.out.println(numbers); }
}

步骤 5 : 滚动

rotate 把List中的数据,向右滚动指定单位的长度

package collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List; public class TestCollection {
public static void main(String[] args) {
//初始化集合numbers
List<Integer> numbers = new ArrayList<>(); for (int i = 0; i < 10; i++) {
numbers.add(i);
} System.out.println("集合中的数据:");
System.out.println(numbers); Collections.rotate(numbers,2);
System.out.println("把集合向右滚动2个单位,标的数据后,集合中的数据:");
System.out.println(numbers); }
}

步骤 6 : 线程安全化

synchronizedList 把非线程安全的List转换为线程安全的List。

package collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List; public class TestCollection {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>(); System.out.println("把非线程安全的List转换为线程安全的List");
List<Integer> synchronizedNumbers = (List<Integer>) Collections.synchronizedList(numbers); }
}

练习统计概率

首先初始化一个List,长度是10,值是0-9。

然后不断的shuffle,直到前3位出现

3 1 4

shuffle 1000,000 次,统计出现的概率

答案 :

package collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List; public class TestCollection {
public static void main(String[] args) {
List<Integer> ls = new ArrayList<>(); for (int i = 0; i < 10; i++) {
ls.add(i);
}
int count = 0; for (int i = 0; i < 1000 * 1000; i++) {
Collections.shuffle(ls);
if(ls.get(0)==3 && ls.get(1)==1 && ls.get(2)==4)
count++;
}
double rate = count/(1000d*1000);
System.out.println("出现的概率是"+rate*100+"%"); } }

Java自学-集合框架 Collections的更多相关文章

  1. Java自学-集合框架 Collection

    Java集合框架 Collection Collection是一个接口 步骤 1 : Collection Collection是 Set List Queue和 Deque的接口 Queue: 先进 ...

  2. Java自学-集合框架 HashSet

    Java集合框架 HashSet 示例 1 : 元素不能重复 Set中的元素,不能重复 package collection; import java.util.HashSet; public cla ...

  3. Java自学-集合框架 HashMap

    Java集合框架 HashMap 示例 1 : HashMap的键值对 HashMap储存数据的方式是-- 键值对 package collection; import java.util.HashM ...

  4. Java自学-集合框架 二叉树

    Java集合框架 二叉树 示例 1 : 二叉树概念 二叉树由各种节点组成 二叉树特点: 每个节点都可以有左子节点,右子节点 每一个节点都有一个值 package collection; public ...

  5. Java自学-集合框架 LinkedList

    Java集合框架 LinkedList 序列分先进先出FIFO,先进后出FILO FIFO在Java中又叫Queue 队列 FILO在Java中又叫Stack 栈 示例 1 : LinkedList ...

  6. Java自学-集合框架 与数组的区别

    Java集合框架与数组的区别 示例 1 : 使用数组的局限性 如果要存放多个对象,可以使用数组,但是数组有局限性 比如 声明长度是10的数组 不用的数组就浪费了 超过10的个数,又放不下 //Test ...

  7. Java自学-集合框架 Comparator和Comparable

    Java Comparator和Comparable 步骤 1 : Comparator 假设Hero有三个属性 name,hp,damage 一个集合中放存放10个Hero,通过Collection ...

  8. Java自学-集合框架 聚合操作

    聚合操作 步骤 1 : 聚合操作 JDK8之后,引入了对集合的聚合操作,可以非常容易的遍历,筛选,比较集合中的元素. 像这样: String name =heros .stream() .sorted ...

  9. Java自学-集合框架 遍历

    遍历ArrayList的三种方法 步骤 1 : 用for循环遍历 通过前面的学习,知道了可以用size()和get()分别得到大小,和获取指定位置的元素,结合for循环就可以遍历出ArrayList的 ...

随机推荐

  1. 高强度学习训练第十天总结:Class文件

    今天这Class文件看的我一脸懵圈.有种当初学PE时候的感觉了. 类文件结构 如果计算机的CPU指令集只有X86一种,操作系统也只有windows,那也许Java语言就不会出现.Java在诞生之初就提 ...

  2. css精灵图&字体图标

    精灵图 为什么需要精灵图 为了有效的减少服务器接收和发送请求的次数,提高页面的加载速度.出现了CSS精灵技术 精灵图(sprites)的使用 精灵技术主要针对背景图片.就是把多个小背景图片整合到一张大 ...

  3. Kali linux-信息收集-dmitry

    信息收集-dmitry DMitry(Deepmagic Information Gathering Tools 深度信息收集工具)是一个kali linux下用C语言写的工具.主要功能为端口扫描,w ...

  4. union注入的几道ctf题,实验吧简单的sql注入1,2,这个看起来有点简单和bugku的成绩单

    这几天在做CTF当中遇到了几次sql注入都是union,写篇博客记录学习一下. 首先推荐一篇文章“https://blog.csdn.net/Litbai_zhang/article/details/ ...

  5. 微软在Build 2019大会上发布Fluid Framework协作平台

    在今年年度开发者大会上,微软已经为开发人员宣布了一个新的Fluid Framework.该框架基本上是一个新的基于Web的平台,允许团队在自由流动的流程上工作.微软已经分享了一些新功能,可以帮助团队在 ...

  6. ADB控制手机命令(adb命令)

    手机端配置tcp方式连接 su setprop service.adb.tcp.port 5555 stop adbd start adbd 首先使用管理员权限,然后打开监听5555端口 电脑端使用a ...

  7. zabbix4.0搭建2

    server端(ip 192.168.200.15) proxy端(ip 192.168.200.22) agent端(ip 192.168.200.12) server端: #安装数据库 [mari ...

  8. 024.微服务架构之服务注册与发现(kubernetes / SpringCloud)

    微服务 微服务是一种架构模式,一种分布式的架构风格. 顾名思义,micro service,将一个庞大的单体应用拆分成若干个“微小”的服务,服务间通过进程通讯完成原本在单体应用中的调用. 其中必要的六 ...

  9. vue项目关闭eslint校验

    [前言] eslint是一个JavaScript的校验插件,通常用来校验语法或代码的书写风格.这篇文章主要介绍了vue项目关闭eslint校验,需要的朋友可以参考下 [主体] 简介eslint esl ...

  10. session.invalidate() 退出登录

    当浏览器第一次请求时,服务器创建一个session对象,同时生成一个sessionId,并在此次响应中将sessionId 以响应报文的方式传回客户端浏览器内存或以重写url方式送回客户端,来保持整个 ...