【java数据结构】ArrayList实例

news2024/11/25 16:15:10

【java数据结构】ArrayList实例

  • 一、杨辉三角
  • 二、打扑克

一、杨辉三角

在这里插入图片描述

已知条件:给定行数的大小

思路:首先定义一个二维列表(也可以称为集合),我们对每一列处理完,最后把每一列加起来,不就是完整的“杨辉三角”。所以接下来就是对每一列进行处理,已知杨辉三角每一列第一个数和最后一个数是1,所以这里直接list.add(1);中间部分遵循【i】【j】=【i-1】【j】+【i-1】【j-1】,但是这是个列表,我们并不知道上一列 ij 位置的数值,所以这里需要对上一列定义一个引用,方便我们接下来找到上一列的 ij

在这里插入图片描述
在这里插入图片描述


import java.util.ArrayList;
import java.util.List;
public class Main {
    public static List<List<Integer>> Triangle(int numrows){
        List<List<Integer>> ret=new ArrayList<>();
        //注释1
        List<Integer> list0=new ArrayList<>();
        list0.add(1);
        ret.add(list0);
        for (int i = 1; i < numrows; i++) {
            List<Integer> list=new ArrayList<>();
            //开头
            list.add(1);
            //中间
            //注释2
            List<Integer> tmp=ret.get(i-1);
            for (int j = 1; j < i; j++) {
                int val1= tmp.get(j);
                int val2= tmp.get(j-1);
                list.add(val1+val2);
            }
            //结尾
            list.add(1);
            ret.add(list);
        }
        return ret;
    }
    public static void main(String[] args) {
        List<List<Integer>> ret=Triangle(4);
//        for (int i = 0; i < ret.size(); i++) {
//            for (int j = 0; j < ret.get(i).size(); j++) {
//                System.out.print(ret.get(i).get(j)+" ");
//            }
//            System.out.println();
//        }
        for (List<Integer> x:
             ret) {
            System.out.println(x);
        }
    }
}

注释1:需要先将第一列定义出来,不定义第一列,如果 i从0开始, 则**List tmp=ret.get(i-1);**这段代码就会出现数组越界的异常。
注释2:因为需要获取上一列的【i-1】【j】和【i-1】【j-1】,所以这里需要先将上一列定义出来,这里的tmp是对象的引用,不是数组。

二、打扑克

已知扑克有1-13种数字,并且有四种花色"♥",“♠”,“♣”,“♦”。

需完成的任务:
1.首先需要定义一个列表(集合),存储这52张牌,因为有数字和花色两种。
2.获得52张牌后,需要将牌打乱。
3.最后三个人轮流摸牌。

定义一副牌,牌包括花色和大小,并且重写tostring()方法

public class Poker {
    int a;
    String str;

    public Poker(int a, String str) {
        this.a = a;
        this.str = str;
    }

    @Override
    public String toString() {
        return "{"+a+str+"} ";
    }
}

有关牌的所有操作方法

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Method {
    List<List<Integer>> card=new ArrayList<>();
    public static String suit[]={"♥","♠","♣","♦"};
    public List<Poker> getPoker() {
        List<Poker> gPoker=new ArrayList<>();
        for (int i = 1; i <=13 ; i++) {
            for (int j = 0; j < 4; j++) {
                String s=suit[j];
                Poker poker=new Poker(i,s);
                gPoker.add(poker);
            }
        }
        return gPoker;
    }

    //打乱牌序
    public void Disrupt(List<Poker> pokers){
        Random random=new Random();
        for(int i =pokers.size()-1;i>0;i--){
        //随机产生i~1之间的数
            int index=random.nextInt(i);
            swap(pokers,i,index);
        }
    }
    public void swap(List<Poker> pokers,int i,int j){
        Poker tmp=pokers.get(i);
        pokers.set(i,pokers.get(j));
        pokers.set(j,tmp);
    }

    public List<List<Poker>> play (List<Poker> pokers){ 
        List<Poker> hand0=new ArrayList<>();
        List<Poker> hand1=new ArrayList<>();
        List<Poker> hand2=new ArrayList<>();

        List<List<Poker>> hand = new ArrayList<>();
        hand.add(hand0);
        hand.add(hand1);
        hand.add(hand2);

        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 3; j++) {
                Poker poker =pokers.remove(0);
                hand.get(j).add(poker);
            }
        }
        return hand;
    }
}

main函数,调用牌的各种操作方法

import java.util.List;

public class Test {
    public static void main(String[] args) {
        Method method = new Method();
        //获取牌
        List<Poker> ret = method.getPoker();
       //洗牌
        method.Disrupt(ret);
        System.out.println(ret);
        //三个人抓牌
        //3. 3个人 每个人 轮流揭牌5张
        List<List<Poker>> ret1 = method.play(ret);

        for (int i = 0; i < ret1.size(); i++) {
            System.out.println("第" + (i + 1) + "个人的牌:" + ret1.get(i));
        }

        System.out.println("剩下的牌:");
        System.out.println(ret);

    }
}

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

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

相关文章

构建MySQL健康检查Web应用

构建MySQL健康检查Web应用 在这里将探讨如何将MySQL健康检查功能转换为一个功能完整的Web应用。这个应用允许用户通过简单的Web界面执行MySQL健康检查&#xff0c;并查看详细的结果。我们将逐步介绍代码实现、改进过程以及如何设置和运行这个应用。 1. MySQL健康检查类 首先…

YOLOV5改进系列(2)——CA注意力机制

一、CA注意力机制 1.1 CA注意力机制介绍 Coordinate Attention&#xff08;CA&#xff09;是一种用于移动网络的轻量级注意力机制&#xff0c;旨在在不增加计算成本的前提下增强特征表达能力。与传统的通道注意力机制&#xff08;如Squeeze-and-Excitation&#xff09;不同&am…

修改银河麒麟操作系统V10(SP1)网卡名称为ethx

修改银河麒麟桌面操作系统V10&#xff08;SP1&#xff09;网卡名称为ethx 步骤一&#xff1a;查看当前网卡信息步骤二&#xff1a;修改GRUB配置文件步骤三&#xff1a;更新GRUB配置步骤四&#xff1a;编辑网络接口文件步骤五&#xff1a;重启机器 &#x1f496;The Begin&#…

【电商搜索】现代工业级电商搜索技术-EMNLP2024-无监督的用户偏好学习

【电商搜索】现代工业级电商搜索技术-EMNLP2024-无监督的用户偏好学习 0. 论文信息 Title: Unsupervised Human Preference Learning Authors: Sumuk Shashidhar, Abhinav Chinta, Vaibhav Sahai, Dilek Hakkani Tur Comments: EMNLP 2024 Main Conference https://arxiv.org…

『网络游戏』Tips弹窗队列【10】

修改脚本&#xff1a;DynamicWnd.cs 修改脚本&#xff1a;GameRoot.cs 运行项目 - Tips提示消息按顺序依次弹出显示 修改代码&#xff1a;GameRoot.cs 修改代码&#xff1a;LoginSys.cs 运行项目 设置初始化函数 将CreateWnd设置为隐藏 运行项目 本章结束

YOLO 二元分类器

YOLO 二元分类器 在评估二元分类器性能时&#xff0c;TP、FP、TN和FN是四个核心指标&#xff0c;它们分别代表真阳性、假阳性、真阴性和假阴性。以下是这些指标的定义、计算方法以及在实际应用中的意义&#xff1a; 定义 TP&#xff08;真阳性&#xff09;&#xff1a;模型正…

【多重循环在Java中的应用】

多重循环在Java中的应用 介绍 多重循环是将一个循环嵌套在另一个循环体内的编程结构。Java中的 for、while 和 do...while 循环均可作为外层循环和内层循环。建议使用两层嵌套&#xff0c;最多不超过三层&#xff0c;以保持代码的可读性。 在多重循环中&#xff0c;外层循环执…

POST注入通过sqli-labs靶场less-11

POST注入原理 原理介绍 进入第十一关靶场&#xff0c;我们发现是一个登录窗口&#xff0c;随意提交数据&#xff0c;显示 在url地址进行get提交&#xff0c;发现一直是登录窗口&#xff0c;页面无其他变化&#xff0c;想到post提交注入。 通关原理 打开靶场源码文件。 查看…

ChatGPT+AI项目实战:打造多端智能虚拟数字人

ChatGPTAI项目实战&#xff1a;打造多端智能虚拟数字人 越是就业难的情况下&#xff0c;就要越不断的提升自己的能力。前端开发饱和&#xff0c;Java开发饱和&#xff0c;还有什么不饱和呢&#xff0c;AI开发&#xff01; 本文将详细介绍一门旨在通过项目实战&#xff0c;融合…

图片压缩王2.1.5 | 高效图片处理,无广告无登录

图片压缩王是一款专为安卓用户设计的高效图片处理工具。支持批量压缩、格式转换、缩放和裁剪等功能&#xff0c;无广告无登录&#xff0c;让你专注图片处理。 大小&#xff1a;25M 百度网盘&#xff1a;https://pan.baidu.com/s/1cfNJmy6-KeNtlMJRknMZOA?pwdolxt 夸克网盘&am…

【Linux基础】03 Linux环境基础开发工具使用

1. yum ——软件包管理器 yum 是我们 Linux 预装的一个指令&#xff0c;搜索、下载、、安装对应的软件 yum 相当于 Linux 的应用商店&#xff01; 安装与卸载 yum list | grep command 通过 yum list 命令可以罗列出当前一共有哪些软件包. 由于包的数目可能非常之多, 这里我…

微知-如何通过systemctl查看是否存在某个服务?如何全局查看所有的服务?(systemctl list-units --type=service, )

背景 本文介绍在某些场景需要查看是否启动某个服务&#xff0c; 命令 可以全局服务查看&#xff1a;&#xff08;常用在记不清命令名字&#xff0c;只能记住片段&#xff09; systemctl list-units --typeservice | grep rsh也可以直接查看 systemctl status rshim 或者&a…

【数据分享】1901-2023年我国省市县三级逐月最高气温数据(免费获取/Shp/Excel格式)

之前我们分享过1901-2023年1km分辨率逐月最高气温栅格数据&#xff08;可查看之前的文章获悉详情&#xff09;&#xff0c;该数据来源于国家青藏高原科学数据中心&#xff0c;很多小伙伴拿到数据后反馈栅格数据不太方便使用&#xff0c;问我们能不能把数据处理为更方便使用的Sh…

Cannon-ES中RaycastVehicle的深入探索与实践

本文目录 前言1、RaycastVehicle1.1 概念1.2 核心特性1.3 应用场景 2、前置代码准备3、RaycastVehicle的使用3.1 代码3.2 效果 4、监听施加力4.1 代码4.2 效果 前言 在三维物理引擎的世界里&#xff0c;Cannon-ES以其轻量级、高效和易于集成的特点&#xff0c;赢得了众多开发者…

小红书推广7种策略让你在竞争中脱颖而出-华媒舍

1. 小红书&#xff08;Redbook&#xff09; 小红书是中国一家以时尚生活为主题的社交电商平台&#xff0c;为用户提供购物、分享、评论和推广的综合服务。用户可以在平台上发布和浏览心得、评价和购买链接。随着用户数量的不断增加&#xff0c;如何在竞争中脱颖而出&#xff0…

远程控制软件推荐:亲测好用!

无论是在家办公、技术支持还是远程协助家人&#xff0c;一个好的远程控制工具都能让我们的工作更加高效。下面&#xff0c;我将分享我对几款流行的远程控制软件的个人体验&#xff0c;并给出我的推荐。 向日葵远程控制 直达链接&#xff1a;down.oray.com 向日葵远程控制是…

《重生到现代之从零开始的C语言生活》—— 联合体和枚举

联合体 像结构体一样&#xff0c;联合体也是由一个或多个成员构成 但是只会给最大的成员分配内存&#xff0c;联合体的特点就是所有成员共用一块内存空间&#xff0c;所以也叫共同体 由于所有的成员共用一块内存空间&#xff0c;所以如果给其中的一个成员赋值的话&#xff0…

外贸财务管理必备,6款热门软件优势对比

外贸企业的财务管理面临着多币种结算、汇率波动、跨境支付等复杂问题。本文将盘点Zoho Books、KashFlow、Sage Intacct等六款热门的外贸财务软件&#xff0c;并探讨它们各自的优势与特点&#xff0c;以帮助外贸企业做出明智的选择。 一、Zoho Books Zoho Books是一款面向中小企…

集合框架05:List接口使用、List实现类、ArrayList使用

视频链接&#xff1a;13.11 ArrayList使用_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1zD4y1Q7Fw?p11&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.List接口使用代码举例 package com.yundait.Demo01;import java.util.ArrayList; import java.util.List;pu…

DAMA数据管理知识体系(第8章 数据集成和互操作)

课本内容 8.1 引言 概要 数据集成和互操作&#xff08;DII&#xff09;描述了数据在不同数据存储、应用程序 和组织这三者内部和之间进行移动和整合的相关过程数据集成和互操作是新兴大数据管理领域的核心业务驱动因素 数据集成和互操作的主要目的是为了对数据移动进行有效的管…