Collections

news2025/1/22 19:11:09

Collections

Collections四种对集合进行排序的方式

方法名说明
public static <T extends Comparable<? super T>> void sort (List<T> list)排序
public static void reverse(List<?> list)逆序
public static void shuffle(List<?> list)随机排列

demo:

package com.itxs.demo01;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;

/**
 * @Classname : demo01
 * @Description : TODO Collections 工具类
 * @Author : lin_refuel@qq.com
 */
public class demo01 {
    public static void main(String[] args) {
        //ArrayList集合
        ArrayList<String> list = new ArrayList<>();
        list.add("123456789");
        list.add("23456789");
        list.add("3456789");
        list.add("456789");
        list.add("56789");
        list.add("6789");
        list.add("789");
        list.add("89");
        list.add("9");
        //****************************************************************
        // Collections四种排序方法
        //方式一:
        //Collections.sort(list); //正常默认排序,按照添加顺序前后
        //****************************************************************
        //方式二:按照字符串长度进行排序
//        Collections.sort(list, new Comparator<String>() {
//            @Override
//            public int compare(String o1, String o2) {
//                //return 0; // 默认排序
//                //return o1.length() - o2.length(); //字符串长度从小到大进行排序
//                return o2.length()-o1.length(); //字符串长度,从大到小进行排序
//            }
//        });
        //****************************************************************
         //方式三:逆序从后往前进行排序
       // Collections.reverse(list);
        //****************************************************************
        // 方式四:随机进行排序
        Collections.shuffle(list);
        //****************************************************************
        for (String s : list) {
            System.out.println(s);
        }
    }
}

模拟斗地主发牌的案例

package com.itxs.demo01;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;

/**
 * @Classname : demo02
 * @Description : TODO 模拟斗地主发牌
 * @Author : lin_refuel@qq.com
 */
public class demo02 {
    public static void main(String[] args) {
          //定义一个HashMap作为扑克盒子
        /**
         * Inter作为键值
         * String作为花色和点数
         */
        HashMap<Integer, String> pokerBox = new HashMap<>();
        /**
         * 定义一个Arraylist作为扑克盒子键值的集合用于查找对应扑克盒子里面的对应的花色和点数的牌
         */
        ArrayList<Integer> list = new ArrayList<>();
        //定义一个花色的数组
        String[] color = {"♠","♥","♦","♣"};
        //定义出每个花色的点数
        String[] score = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
        // 定义一个索引,
        int idex = 0;
        // 花色和数组放入扑克盒子里面
        for (String score01 : score) {
            for (String color01 : color) {
                //花色和点数进行拼接
                pokerBox.put(idex,score01+color01);
                list.add(idex++);//存放的键值偏移
            }
        }
        // 两张特殊牌进行处理
        pokerBox.put(idex,"☽");
        list.add(idex++);
        pokerBox.put(idex,"☀");
        list.add(idex);
        // 扑克牌对应的键值进行打乱
        Collections.shuffle(list);
        //定义出三个玩家
        TreeSet<Integer> player01 = new TreeSet<>();
        TreeSet<Integer> player02 = new TreeSet<>();
        TreeSet<Integer> player03 = new TreeSet<>();
        TreeSet<Integer> cards = new TreeSet<>();//三张底牌
        //循环进行发牌的动作
        for (int i = 0; i < list.size(); i++) {
            if(i >= list.size()-3){
                cards.add(list.get(i));//最后三张牌
            }else{
                switch (i%3){
                    case 0: player01.add(list.get(i));break;
                    case 1: player02.add(list.get(i));break;
                    case 2: player03.add(list.get(i));break;
                }
            }
        }
        // 查看每个人的牌
        showcard("小肆",player01,pokerBox);
        showcard("小七",player02,pokerBox);
        showcard("小兰",player03,pokerBox);
        showcard("地主的底牌",cards,pokerBox);
    }

    /**
     *  查看每个玩家手里的牌
     * @param name 玩家的姓名
     * @param player 玩家手里的扑克牌的键值
     * @param Box 扑克盒子
     */
    private static void showcard(String name, TreeSet<Integer> player, HashMap<Integer, String> Box) {
        System.out.print(name +":");
        for (Integer integer : player) {
            System.out.print(Box.get(integer)+" ");//根据键值找到对应盒子里面的牌
        }
        System.out.println("\n============================");
    }
}

运行结果:
在这里插入图片描述

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

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

相关文章

scanf函数返回值占位符详解,%*,%[]的应用

前言 scanf函数可以说是我们一开始就会接触的函数了&#xff0c;但在最近复习时我又找到而来一些之前不甚了解或是块要遗忘的知识&#xff0c;特作此篇。 一.返回值 我们之前提到了scanf返回值被忽略的问题&#xff1a; scanf函数返回值被忽略-CSDN博客 那么scanf的返回值…

Unity JSON编码解码之LitJson 深度剖析

把LitJson的代码库放入到项目中&#xff0c;如图所示:JSON在游戏开发中是一种序列化/反序列化常用的技术&#xff0c;把游戏相关的数据,如地图组成,通过JSON编码&#xff0c;序列化成JSON文本&#xff0c;传输或存储, 要使用的时候再通过JSON技术把文本解析成数据对象&#xff…

Word 将页面方向更改为横向或纵向

文章目录 更改整个文档的方向更改部分页面的方向方法1&#xff1a;方法2&#xff1a; 参考链接 更改整个文档的方向 选择“布局”>“方向”&#xff0c;选择“纵向”或“横向”。 更改部分页面的方向 需要达到下图结果&#xff1a; 方法1&#xff1a; 选:中你要在横向页面…

ThreadLocal为什么存在内存泄漏,源码分析

文章目录 1. ThreadLocal的使用场景2. 弱引用与内存泄露3. 源码分析①&#xff1a;ThreadLocalMap②&#xff1a;set操作③&#xff1a;get操作④&#xff1a;remove操作 4. 继承性 InheritableThreadLocal5. 各类ThreadLocal问题总结 1. ThreadLocal的使用场景 通常&#xff0…

计算机网络复习6

应用层 文章目录 应用层网络应用模型域名系统DNS文件传输协议FTP电子邮件万维网 网络应用模型 客户/服务器模型 客户/服务器&#xff08;Client/Server&#xff0c;C/S)模型中&#xff0c;有一个总是打开的主机称为服务器&#xff0c;它服务于许多来自其他称为客户机的主机请求…

SparkStreaming_window_sparksql_reids

1.5 window 滚动窗口滑动窗口 window操作就是窗口函数。Spark Streaming提供了滑动窗口操作的支持&#xff0c;从而让我们可以对一个滑动窗口内的数据执行计算操作。每次掉落在窗口内的RDD的数据&#xff0c;会被聚合起来执行计算操作&#xff0c;然后生成的RDD&#xff0c;会…

Stable Diffusion WebUI安装合成面部说话插件SadTalker

SadTalker可以根据一张图片、一段音频&#xff0c;合成面部说这段语音的视频。图片需要真人或者接近真人。 安装ffmpeg 下载地址&#xff1a; https://www.gyan.dev/ffmpeg/builds/ 下载ffmpeg-git-full.7z 后解压&#xff0c;将解压后的目录\bin添加到环境变量的Path中。 在…

鸿蒙原生应用再添新丁!爱奇艺入局鸿蒙

鸿蒙原生应用再添新丁&#xff01;爱奇艺 入局鸿蒙 来自 HarmonyOS 微博12月29日消息&#xff0c;#爱奇艺完成鸿蒙原生应用Beta版#作为中国头部在线视频平台&#xff0c;爱奇艺 完成鸿蒙原生应用Beta版&#xff0c;将以丰富的正版高清视频资源促进鸿蒙生态的进一步繁荣&#x…

python实现图像的二维傅里叶变换——冈萨雷斯数字图像处理

原理 二维傅里叶变换是一种在图像处理中常用的数学工具&#xff0c;它将图像从空间域&#xff08;我们通常看到的像素排列&#xff09;转换到频率域。这种变换揭示了图像的频率成分&#xff0c;有助于进行各种图像分析和处理&#xff0c;如滤波、图像增强、边缘检测等。 在数学…

YOLOv5算法进阶改进(10)— 更换主干网络之MobileViTv3 | 轻量化Backbone

前言:Hello大家好,我是小哥谈。MobileViTv3是一种改进的模型架构,用于图像分类任务。它是在MobileViTv1和MobileViTv2的基础上进行改进的,通过引入新的模块和优化网络结构来提高性能。本节课就给大家介绍一下如何在主干网络中引入MobileViTv3网络结构,希望大家学习之后能够…

Stable Diffusion WebUI制作光影文字效果

在huggingface上下载control_v1p_sd15_brightness模型。 将模型放在stable-diffusion-webui\extensions\sd-webui-controlnet\models目录下。 SD参数配置 正向提示词&#xff1a; city,Building,tall building,Neon Light, gentle light shines through, anime style, paint…

冒泡排序--------(C每日一题)

冒泡排序&#xff1a; 每次将相邻的两个数比较,将小的调到前头--升序 冒泡排序一个结论&#xff1a; n个数要进行n-1轮比较&#xff0c;第j轮要进行n-j次两两比较 循环体代码&#xff1a; int main() {int i, j,n,a[10],t;//n是几个数比较for(j1;j<n-1;j)//控制轮次for…

PNG免抠素材库,免费下载,可商用~

本期分享5个高质量PNG素材网站&#xff0c;让你在工作中大大提高效率&#xff0c;节省更多的时间&#xff0c;赶紧收藏起来吧~ 1、菜鸟图库 https://www.sucai999.com/searchlist/66008----all-0-1.html?vNTYxMjky 网站主要分享设计素材为主。像平面海报、免抠元素、背景图片…

英语打卡分析12

[爱心]长难句分享第十二天解析 [玫瑰]【词汇】&#xff1a; • appropriate [əˈproʊpriət] adj. 恰当的 • in place 准备妥当 • caregiver [ˈkerɡɪvər] n. 看护人 • no more … than… 和……一样不 • newsworthy [ˈnuːzwɜːri] adj. 值得报道的 • capable […

记一次应急响应练习(Linux)

记一次应急响应练习(Linux) Linux&#xff1a; 请提交攻击者的IP地址 答&#xff1a; 192.168.31.132 思路&#xff1a; 通过查看历史命令和开放的8080端口看到这台主机上运行的是Tomcat服务。并且在历史命令中看到了Tomcat的安装路径。那么就算是找到了日志的查看点了&#x…

SpringBoot3 核心技能

1. 常用注解 SpringBoot摒弃XML配置方式&#xff0c;改为全注解驱动 1. 组件注册 Configuration、SpringBootConfiguration Bean、Scope Controller、 Service、Repository、Component Import ComponentScan 步骤&#xff1a; 1、Configuration 编写一个配置类 2、在…

中科院1区TOP,Elsevier出版社,均1-2个月录用!检索超稳!

【SciencePub学术】本期&#xff0c;小编给大家推荐的是一本Elsevier旗下、工程技术领域、影响因子为6.0的中科院1区TOP。其详情如下&#xff1a; 期刊简介 TRIBOLOGY INTERNATIONAL ISSN&#xff1a;0301-679X E-ISSN&#xff1a;1879-2464 IF&#xff08;2022&#x…

Python生成器 (Generators in Python)

Generators in Python 文章目录 Generators in PythonIntroduction 导言贯穿全文的几句话为什么 Python 有生成器Generator&#xff1f;如何获得生成器Generator&#xff1f;1. 生成器表达式 Generator Expression2. 使用yield定义生成器Generator 更多Generator应用实例表示无…

深度优先和广度优先

文章目录 前言一、深度和广度的区别二、代码演示1.准备数据,构造树2.深度优先遍历3.广度优先遍历 总结 前言 深度优先和广度优先的区别&#xff1a; 搜索方式不同 。深度优先搜索算法不全部保留结点&#xff0c;扩展完的结点从数据库中弹出删去&#xff1b;广度优先搜索算法需…

隐身之术:深入解析代理模式的神秘力量

一、定义 代理模式&#xff08;Proxy Pattern)为其他对象提供一种代理以控制对这个对象的访问,属于结构型模式。 二、解决什么问题 主要解决在直接访问对象时带来的问题&#xff0c;比如说&#xff1a;要访问的对象在远程的机器上。在面向对象系统中&#xff0c;有些对象由于…