【java数据结构】ArrayList实例

【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<>();//注释1List<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);//中间//注释2List<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;}@Overridepublic 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.xdnf.cn/news/1557869.html

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

相关文章

某象异形滑块99%准确率方案

注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 如有侵犯,请联系作者下架 该文章模型已经上线ocr识别网站,欢迎测试!!,地址:http://yxlocr.nat300.top/ocr/slider/6 所谓的顶象异形滑块,是指没有采用常规的缺口,使用各种形状的缺口…

国外电商系统开发-运维系统文件上传-高级上传

如果您要上传文件到10台服务器中&#xff0c;有3台服务器的路径不是一样的&#xff0c;那么在这种情况下您就可以使用本功能&#xff0c;单独执行不一样的路径 点击【高级】上传

仿真技术入门书籍:《模拟集成电路设计与仿真》(可下载)

无论是在通信、医疗、消费电子还是工业控制领域&#xff0c;模拟集成电路都是实现复杂电子系统功能的关键。在电子工程领域&#xff0c;模拟集成电路设计是一门深奥而复杂的学科。随着技术的发展&#xff0c;设计者们需要掌握的不仅是电路设计原理&#xff0c;还包括仿真技术的…

【C语言刷力扣】1436.旅行终点站

题目&#xff1a; 解题思路&#xff1a; 两层循环查找&#xff0c;第一次循环中初始化 destination 为 path中每次旅行的终点作为最终的终点。二次循环查找当前 destination &#xff0c;若是作为某次旅行的起点&#xff0c;说明不是最后的终点。 char* destCity(char ***paths…

Tomcat服务部署、优化及多实例实验

目录 一、Tomcat的基本介绍 1. tomcat是什么&#xff1f; 2.tomcat构成组件 2.1 web容器 2.2 servlet容器 2.3 jsp容器 3. tomcat的顶层架构 4.tomcat的核心功能 5.tomcat的请求过程 6.tomcat的配置文件 二、tomcat服务部署 1. 安装jdk、设置环境变量并测试 2.安装启动t…

Windows无需管理员权限,命令轻松修改IP和DNS

哈喽大家好&#xff0c;欢迎来到虚拟化时代君&#xff08;XNHCYL&#xff09;。 “ 大家好&#xff0c;我是虚拟化时代君&#xff0c;一位潜心于互联网的技术宅男。这里每天为你分享各种你感兴趣的技术、教程、软件、资源、福利…&#xff08;每天更新不间断&#xff0c;福利…

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

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

计算机网络:数据链路层详解

目录 一、点对点信道&#xff1a; &#xff08;1&#xff09;封装成帧 &#xff08;2&#xff09;透明传输 &#xff08;3&#xff09;差错检测 二、点对点协议 &#xff08;1&#xff09;数据链路层的特点 &#xff08;2&#xff09;PPP协议的组成 &#xff08;3&…

Vue3 使用 pinia

什么是Pinia Pinia是 Vue 的存储库&#xff0c;它允许您跨组件/页面共享状态&#xff0c;与vuex功能一样。 准备 安装 npm install pinia 或者 yarn add pinia使用 首先修改main.ts文件 main.ts import ./assets/main.cssimport { createApp } from vue import App from…

《强烈推荐一个强大的书签管理工具》

在信息爆炸的时代&#xff0c;我们每天都会浏览大量的网页&#xff0c;收藏各种各样的书签。然而&#xff0c;随着书签数量的增加&#xff0c;管理起来也变得越来越困难。这时&#xff0c;一个强大的书签管理工具就显得尤为重要。今天&#xff0c;我要向大家推荐一款备受好评的…

[控制理论]—差分变换法与双线性变换法的基本原理和代码实现

差分变换法与双线性变换法的基本原理和代码实现 1.差分变换法 差分变换法就是把微分方程中的导数用有限差分来近似等效&#xff0c;得到一个与原微分方程逼近的差分方程。 差分变换法包括后向差分与前向差分。 1.1 后向差分法 差分变换如下&#xff1a; d e ( t ) d t e…

下一个赛场见!从中网看海尔智家的全球化布局

下一个赛场见&#xff01; 我想这是每个看完中国网球公开赛女子决赛后&#xff0c;清晰又坚定的约定。正如国庆假期后&#xff0c;下一个假期见成为很多人的期待。 10月6日&#xff0c;备受瞩目的中国网球公开赛女子决赛迎来了最高光时刻并落下帷幕。 美国选手高芙获得冠军&…

如何高效开展关联方风险监控?

关联方风险监控是指对企业与其关联方之间的交易、资金往来、担保等行为进行监控&#xff0c;以识别和防范潜在的风险。以下是一些高效开展关联方风险监控的方法&#xff1a; 1.建立关联方识别机制&#xff1a; 明确关联方的定义&#xff0c;包括直接或间接控制企业的个人或实体…

一个月学会Java 第5天 控制结构

Day5 控制结构 这么叫可能有些就算有基础的人也看不懂&#xff0c;其实就是if-else、switch-case、for、while、do-while这几个&#xff0c;没基础的听到了这个也不要慌张&#xff0c;这几个是程序的基础&#xff0c;多多训练就好 第一章 顺序结构 这章其实没有什么好讲的&…

大数据新视界 --大数据大厂之 Presto 性能优化秘籍:加速大数据交互式查询

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

算法:前缀和算法模版

一维前缀和 题目 链接&#xff1a;一维前缀和模版题 思路分析 一&#xff1a;暴力O(q * N) 对于每一次询问&#xff0c;我们都可以用一个循环计算[l,r]区间内的元素和&#xff0c; 时间复杂度&#xff0c;O(q * N) 每一次计算一个区间都需要去循环一次&#xff0c;这是不是…

windows C++-创建图像处理的异步消息(二)

创建图像处理网络 此部分介绍如何创建对给定目录中的每个 JPEG (.jpg) 图像执行图像处理的异步消息块网络。 网络执行以下图像处理操作&#xff1a; 对于 Tom 创作的任何图像&#xff0c;转换为灰度。 对于任何以红色作为主色的图像&#xff0c;移除绿色和蓝色分量&#xff0…

如何避免PuTTY的连接超时

问题&#xff1a;使用PuTTY默认创建的SSH连接&#xff0c;过一会就会提示“Remote side unexpectedly closed network connection" 解决方法&#xff1a; 要防止PuTTY会话由于空闲而断开连接&#xff0c;可以通过启用keep-alives功能&#xff0c;使PuTTY定期向远程主机发…

2-116 基于matlab的主成分分析(PCA)及累积总和(CUSUM)算法故障监测

基于matlab的主成分分析&#xff08;PCA&#xff09;及累积总和&#xff08;CUSUM&#xff09;算法故障监测&#xff0c;针对传统的多元统计分析方法对生产过程中微小故障检测不灵敏的问题&#xff0c;使用基于主元分析的累积和的微小故障检测方法进行故障监测&#xff0c;通过…

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

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