-
java实现单链表的添加和遍历功能
2019-08-06 19:57:44java实现单链表的添加和遍历功能 为了防止自己遗忘,将现在还理解的单链表记录下来。 单链表具体是什么呢? 最根本的就是将你要储存的数据分成两个部分,一部分用来存储输入的数据,一部分存储下一个数据的地址 存储...java实现单链表的添加和遍历功能
为了防止自己遗忘,将现在还理解的单链表记录下来。
单链表具体是什么呢?
最根本的就是将你要储存的数据分成两个部分,一部分用来存储输入的数据,一部分存储下一个数据的地址那么我们每个存储值的块就需要分隔成两个部分,一部分存储数据一部分存储下个块的地址
这样我们需要建立一个node类然后里面有两个成员变量,一个是date用来存放数据,一个是next用来存放下一个值的地址。然后我们建立一个构造函数,测试的时候直接将值传过来。
public class Node { public Object date; //存放数据 public Node next; //存储下一个数据的地址 public Node(Object date) { this.date = date; }
这样测试类创建新的对象的时候内存里面就有两个区域,一个存储数据,一个存储下一个地址。
接下来我们开始实现添加功能,首先我们需要建立一个链表类,它的成员变量就是第一个头结点
这里提一下头结点,它的作用就是存储第一个块的地址,其他的什么都不需要它干,这样我们只需要知道头结点就可以知道下面所有结点存储的内容了。
介绍完了头结点之后,我们开始创建添加结点的方法,我们需要在测试类添加数据的时候顺便建立新的对象,这样我们需要我们的添加方法需要接收到具体我们添加的东西。
public Node head ; //初始化头结点 public void addNode(Object obj) { Node node = new Node(obj); }
这样测试类添加数据的时候就会直接创建对象,下面我们开始实现如何存储下一个结点的地址。
首先我们应该考虑一下我们应该怎么添加结点,正常思路下我们只需要一节一节的添加下去就可以,这里我用另一种添加方式就是从头开始添加
这是正常的添加方式
这是我的添加方式,为了加强表现才会存在head还在指向第二个结点。
这是head存着的就是添加结点的下一个结点的地址,这样我们就需要将head的地址给添加结点,然后将添加结点的地址给head
public void addNode(Object obj) { Node node = new Node(obj); /* * 串接到head */ node.next = head;//将原本head指向的地址赋给新加入的 head = node;//将这个新加入的地址赋给head }
这样最后一个地址永远是null的了,知道了这点我们就可以开始写遍历了
public void print() { Node temp = head;//建立一个游标,第一个游标指向头数据 while(temp!=null) { System.out.println(temp.date); temp = temp.next; //游标后移 } }
这里建立的temp充当一个指针的作用,创建node属性的它,这样他就也有date和next的两个属性了。
然后第一步现将head给他,然后我们就开始遍历了。只要temp里面不是null就打印,顺便还能游标后移这里记录一下,防止自己的狗脑子又忘了。
-
java 显示玩家分得的一手牌_java实现扑克牌分发功能
2021-02-26 19:44:34本文实例为大家分享了java实现扑克牌分发的具体代码,供大家参考,具体内容如下实现一个三人斗地主的扑克牌分发功能思路:1、准备一组54张的扑克牌2、洗牌3、将扑克牌分发到玩家手中4、查看每个选手中的扑克牌和地主...本文实例为大家分享了java实现扑克牌分发的具体代码,供大家参考,具体内容如下
实现一个三人斗地主的扑克牌分发功能
思路:
1、准备一组54张的扑克牌
2、洗牌
3、将扑克牌分发到玩家手中
4、查看每个选手中的扑克牌和地主的底牌
思路补充:先创建两个花色和数字的数组,再创建一个List集合,和Map集合,运用双层for循环将花色和数字依次组合成52张扑克牌,之后分别在加添加进Map集合中的value值中,Map中的key值依次用0-51表示,双层for循环的同时将0-51的值依次赋值给List集合中,循环结束后在依次将大王、小王加入Map集合中的value中相对应的key值用52和53表示,还要讲52和53赋值到List集合中,此时所有牌组准备完毕。
分别创建四个新List集合,将存放序号的List集合中的序号打乱后分发到玩家手中,最后留三张底牌,添加到他们对应的List集合中
分别将三位玩家和底牌中的序号集合遍历,遍历出的数值带入到Map中的get方法的key值中,得到相对应得value值(也就是对应的牌),再将value值赋值给玩家手中对应的序号值处。
最后将三位玩家和底牌所对应的List集合输出打印出来即可看到他们被分到的牌。
具体代码如下:
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
public class TestPokerPlus {
public static void main(String[] args) {
//1.创建扑克牌集合
//创建map集合,类似于字典 和 list序号集合
List list = new ArrayList();
HashMap map = new HashMap();
//将花色和数字及JQK组合添加进扑克牌集合map中
String[] color = {"♥","♦","♠","♣"};
String[] number = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
int num = 0;//计数器思想
for(int i = 0 ;i< number.length;i++){
for(int j = 0 ;j< color.length;j++){
map.put(num,color[j]+number[i]);
list.add(num);
num++;
}
}
//将序号集合中加入52,53两位序列,为之后map集合中加入“大王”、“小王”做准备
list.add(list.size());
list.add(list.size());
//在加上大王、小王两张牌
map.put(list.size()-2,"小王");
map.put(list.size()-1,"大王");
//2.打乱
//将序号集合打乱
Collections.shuffle(list);
//3.分牌
//创建三名玩家和底牌集合
List player1 = new ArrayList();
List player2 = new ArrayList();
List player3 = new ArrayList();
List cards = new ArrayList();
//循环分发序号
for(int i = 0 ;i
if(i
if(i % 3 == 1){
player1.add(list.get(i));
}else if(i % 3 == 2){
player2.add(list.get(i));
}else{
player3.add(list.get(i));
}
}else{
cards.add(list.get(i));
}
}
//将分的的序号升序排列
Collections.sort(player1);
Collections.sort(player2);
Collections.sort(player3);
Collections.sort(cards);
//遍历将3个玩家和底牌分得的序号集合 对照map集合重新将对应的牌赋值给对应的序号
boardAssignment(map, player1);
boardAssignment(map, player2);
boardAssignment(map, player3);
boardAssignment(map, cards);
//4.看牌
//打印输出三名玩家的牌的底牌
System.out.println(player1);
System.out.println(player2);
System.out.println(player3);
System.out.println(cards);
}
private static void boardAssignment(HashMap map,List list) {
for(int i = 0;i < list.size();i++){
list.set(i, map.get(list.get(i)));
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
-
基于Java的商品管理功能的实现
2019-07-18 20:12:48基于Java的商品管理功能的实现 1.具体内容: 完成一个电商系统的商品模块功能,商品类包含以下属性:商品ID,商品名,类别名,单价,库存量,产地,计量单 位等信息,要求实现商品管理功能,具体如下: 商品添加 ...基于Java的商品管理功能的实现
1.具体内容:
完成一个电商系统的商品模块功能,商品类包含以下属性:商品ID,商品名,类别名,单价,库存量,产地,计量单 位等信息,要求实现商品管理功能,具体如下:
商品添加
商品列表
查询指定id的商品
根据商品id删除商品
根据id修改指定商品的价格
根据id修改指定商品的库存
根据商品类别查询所有商品
查询指定价格区间的商品信息
2.实现步骤
为了防止一个类中代码过长,我创建三个类来实现功能:
(1)创建商品类:根据商品的属性建立变量(私有化),通过创建set方法和get方法让外界获取,为了方便输入商品信息,创建带参数的构造器,为了方便输出语句创建toString()方法。
(2)创建商品管理类:根据需要实现的管理功能创建方法(这里简化不用Scanner,所以用void,方法中没有返回值)。
(3)创建测试类:通过创建测试类来测试方法的具体功能。
3.具体代码实现:
Comm类:
package com.softeem.homework; /** * * @author ASUS * */ public class Comm { private int cid; private String cname; private String lname; private double price; private int num; private String address; private String unit; public Comm(int cid, String cname, String lname, double price, int num, String address, String unit) { super(); this.cid = cid; this.cname = cname; this.lname = lname; this.price = price; this.num = num; this.address = address; this.unit = unit; } public int getCid() { return cid; } public void setCid(int cid) { this.cid = cid; } public String getCname() { return cname; } public void setCname(String cname) { this.cname = cname; } public String getLname() { return lname; } public void setLname(String lname) { this.lname = lname; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getUnit() { return unit; } public void setUnit(String unit) { this.unit = unit; } @Override public String toString() { return cid + "\t" + cname + "\t" + lname + "\t" + price + "\t" + num + "\t" + address + "\t" + unit ; } }
CommManage类
package com.softeem.homework; import java.util.ArrayList; /** * 商品管理 * @author ASUS * */ public class CommManage { static ArrayList<Comm> list = new ArrayList<>(); /**添加商品*/ public void add(Comm comm){ list.add(comm); } /**商品列表*/ public void findAll(){ for(Comm c:list){ System.out.println(c); } } /**根据id查询商品*/ public Comm findByCid(int cid){ Comm comm = null; for(Comm c:list){ //判断是否找到匹配id的商品 if(c.getCid() == cid){ comm = c; msg(comm); break; } } return comm; } /**根据id删除商品*/ public boolean delete(int cid){ Comm comm = findByCid(cid); if(comm != null){ return list.remove(comm); } return false; } /**根据id修改商品价格*/ public boolean updatePrice(int cid,double price){ Comm comm = findByCid(cid); if(comm != null){ comm.setPrice(price); return true; } return false; } /**根据id修改商品库存*/ public boolean updateUnit(int cid,int num){ Comm comm = findByCid(cid); if(comm != null){ comm.setNum(num); return true; } return false; } /**根据商品类别查询所有商品*/ public ArrayList<Comm> findByLname(String lname){ ArrayList<Comm> comm = new ArrayList<>(); for(Comm c:list){ //查询集合中是否存在员工的部门名称跟参数部门名一致 if(lname.equals(c.getLname())){ comm.add(c); msg(c); } } return comm; } /**根据商品类别查询所有商品*/ public ArrayList<Comm> findByPrice(double price1,double price2){ ArrayList<Comm> comm = new ArrayList<>(); for(Comm c:list){ // 查询指定价格区间的商品 if(price1 <= c.getPrice()&& c.getPrice() <= price2){ comm.add(c); msg(c); } } return comm; } /**输出语句*/ public void msg(Object obj){ System.out.println(obj); } }
Test类
package com.softeem.homework; public class Test { public static void main(String[] args) { Comm c1 = new Comm(101,"抱枕","家用",120,500,"杭州","件"); Comm c2 = new Comm(102,"棉被","家用",320,800,"杭州","件"); Comm c3 = new Comm(103,"床单","家用",80,600,"杭州","件"); Comm c4 = new Comm(104,"冰箱","电器",1200,500,"深圳","件"); Comm c5 = new Comm(105,"汽车","工具",32000,1500,"香港","辆"); Comm c6 = new Comm(106,"手机","电器",1120,3500,"香港","部"); CommManage cm = new CommManage(); cm.add(c1); cm.add(c2); cm.add(c3); cm.add(c4); cm.add(c5); cm.add(c6); // cm.findAll(); // cm.findByCid(103); // cm.delete(103); // cm.findAll(); // cm.updatePrice(101, 200); // cm.updateUnit(104, 1000); // cm.findAll(); // cm.findByLname("家用"); cm.findByPrice(100, 500); } }
添加商品
查询指定id的商品,根据商品id删除商品
根据id修改指定商品的价格,根据id修改指定商品的库存
根据商品类别查询所有商品,查询指定价格区间的商品信息
-
给java的JFileChooser组件添加一个复选框
2015-11-25 21:45:38JFileChooser是个好用的组合,但在java swing编程时可能需要扩展一下它的功能,比如我想给它增加一个复选框,这样可以给选择的文件或文件夹做更详细的控制。比如,我想给选择的文件夹让用户自己选择是否处理子文件夹...JFileChooser是个好用的组件,但在java swing编程时可能有时需要扩展一下它的功能,比如我想给它增加一个复选框,这样可以给选择的文件或文件夹做更详细的控制。比如,我想给选择的文件夹让用户自己选择是否处理子文件夹。
要怎么实现这个功能呢,看了 JFileChooser源代码无从下手,于是采用了另外的方法。
具体做法是继承JFileChooser类,其中增加一个JDialog成员和一个JCheckBox成员。构造函数里将this加入到JDialog中,在弹出时,不使用原来JFileChooser自己的showDialog方法,而是要将这个JDialog显示出来。
定义的成员如下:
JDialog jdlg; //做为JFileChooser的“容器”
JCheckBox jck; //增加的复选框,显示在对话框上
int retVal=-1; //对话框的返回值,JFileChooser.APPROVE_OPTION或JFileChooser.CANCEL_OPTION
boolean isChkSelected=false; //复选的选中状态新的显示对话框方法如下:
public int showDialog() { //不调用原showDialog(parent,approveText)方法
jdlg.setModal(true);
jdlg.setVisible(true);
return retVal;
}为了得到正确的返回值,覆盖了JFileChooser的方法approveSelection()和cancelSelection(),这两个方法是分别对应点击"打开"和"取消"按钮的代码,将方法里将原JFileChooser返回值提供给retVal
另外还需要将自已的checkbox暴露给用户几个设置方法,看需要了,主要是这几个吧:
setCheckBoxText() //设置复选框的文本
setEnabledChk() //启用/禁用复选框
setVisibleChk() //复选框可见性
最终实现的对话框界面:
其实一个复选框能添加,理论上应该能添加多个复选框,甚至是其它组件,使JFileChooser功能更丰富。如果大家也有相同的需求并感兴趣的话,可以看下这个对话框的实际应用例子,我编写的一个java类查找小工具,稍后会传上来。下载地址:http://download.csdn.net/detail/ikaoni/9307723
程序界面
也许这种方法不妥,水平有限,高手们勿喷。希望有兴趣的朋友能给些更好的思路,不胜感谢。
-
Nutch 是一个开源Java 实现的搜索引擎
2016-10-31 14:15:36Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。 Nutch的架构,采用了非常灵活的插件模式,大部分的核心功能,都可以通过组装插件的方式的... -
java多线程世界时钟_Java实现的动态数字时钟功能示例【显示世界时间】
2021-02-26 12:46:23ClockText 测试类 创建 Clock 对象运行效果:具体实现:一、Clock类四个JPnal 三个放时间 最后一个放日期放时间的三个JPnal 分别加入 地点 时间 按钮最后一个按钮添加日期具体实现如下:public class Clock extends... -
java 设计模式的作用和具体实现
2018-08-05 21:28:00java 设计模式的作用和具体实现 1.装饰者模式参考链接:https://www.cnblogs.com/chenxing818/p/4705919.html 作用:给对象添加额外功能 2.单例模式参考链接:... -
用java完成一个电商系统的商品模块功能
2019-08-18 16:56:00项目:完成一个电商系统的商品模块功能,商品类包含以下属性:商品ID, 商品名,类别名,单价,库存量,产地,计量单位等信息,要求实现商品管理功能以及管理员功能,具体如下: 1.管路员登录(账号密码固定admin/... -
JAVA编写的浏览器,在别人的基础上做了些许修改,实现了前进,后退,刷新功能,添加了一个搜索框,具体情况...
2013-02-15 17:21:00* 每个SWT应用程序至少需要一个Display和大于等于1个的Shell实例。 115 */ 116 117 private void open() { 118 // TODO Auto-generated method stub 119 display = Display.getDefault(); ... -
JAVA实现邮箱注册功能
2018-11-27 10:49:55现在我们来看下是如何具体的实现一个邮箱注册的功能。 第一步、先选用个邮箱作为实例 以QQ邮箱为例,开启POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,具体步骤如下图 第二步、在maven中添加一个jar包,名字... -
使用Java的ArrayList实现电商系统模块功能
2019-07-19 20:20:08完成一个电商系统的商品模块功能 管理员类包含以下属性:账号、密码(初始账号为admin、初始密码为admin) 商品类包含以下属性:商品ID,商品名,类别名,单价,库存量,产地,计量单位等信息 要求实现商品管理... -
java 画图板 锯齿_java实现画图板功能
2021-02-28 16:19:36本文实例为大家分享了java实现画图板的具体代码,供大家参考,具体内容如下画图板需要满足的功能有:画线,画三角形,画矩形,画多边形,画曲线设置不同颜色的画笔改变窗口大小或最小化窗口后重新打开时图案不消失... -
Java版socket编程实现带语音聊天和文件传送功能的局域网聊天工具
2014-02-25 09:58:39本资源是本人前面发过的一个局域网聊天工具的升级版。主要在界面上进行了美化,并添加了语音聊天的功能。具体功能有: 1.采用了全新的界面风格(新增) 2.实现了基本文字聊天功能 3.实现了基本文件传送功能 4.实现了... -
求一个Java计算器的程序,具体要求如下:急急急急急…………………………
2016-12-11 13:46:04分析:计算的结果为579.0,为双精度型,计算的结果被设置在文本框的最右端,该计算器的一个特点是可直接在文本框中输入数据以及进行更改。 2.倒数的运算:(以123为例) 分析:输出的结果如图所示,倒数功能实现... -
Java Swing实现JList添加JCheckBox复选框
2018-06-27 21:42:50最近因项目需要具体在JList 框内添加复选框, 网上找了下相关例子,进行下改造,记录一下,这需要实现功能的话就必须重写复选框JCheckBox。 话不多说我们贴上一段图 大概书写一番,Jlist单纯添加数据进去之后大概... -
用Java编写的miniKanren实现Java8kanren.zip
2019-07-19 05:02:17目前,Haskell、Racket、 Ruby、Clojure 以及 Python 中有 miniKanren 的具体实现。其中最典型的实现是 Scheme 的版本。Clojure 语言里的 core.logic 也是受到 miniKanren 启发。 标签:Java8kanren -
java实现简单的ATM项目
2020-10-27 16:11:20首先要了解的是,这个ATM项目本身是一个轻量级的项目,只为了完成一些ATM具备的一些方法,并非是真正完成一个ATM的全部功能和需求 那么在这个轻量级的ATM项目中,我将完成添加储蓄账号,添加信用账户,提款,取款等... -
如何在Android源码编译系统中添加一个Java项目
2017-09-08 17:02:21Java文件Yl_hello.java实现了一个简单的Hello,world!功能,具体实现如下: public class Yl_hello { public static void main(String args[]) { System.out.println("Hello, world!"); } } Android系统... -
java文件批量重命名文件_Java实现文件批量重命名具体实例
2021-03-01 08:26:49本实例实现了批量重命名功能,可以将一个文件夹内同一类型的文件按照一定的规则批量重命名。用户可以给出重命名模板,程序可以根据模板对相应的文件进行重命名。此外,还可以在重命名模板中添加特殊符号,程序会将... -
java利用EasyPoi实现Excel导出功能
2017-08-24 13:18:00easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法。... -
java实现客户信息管理软件(功能展示)
2021-01-19 18:38:33首先是一个程序界面展示具体功能 主要包括增删改查功能,在选择具体的功能编号时可以调用具体的功能 选择1(添加客户) 选择2(修改客户) 修改指定位置上的客户 功能3(删除客户): 删除指定序号的客户,会提示... -
java类的注释模板_IDEA添加Java类注释模版的方法
2021-03-01 11:05:19本文介绍了idea添加java类注释模版的方法,分享给大家,具体如下:idea版本:intellij idea 2017.2.5 x64eclipse能在类上方输入/**,回车添加类注释模版,但idea没有默认添加这个功能,需要做一些设置。下面介绍三种... -
idea java 注释模板_IDEA添加Java类注释模版的方法
2021-02-27 15:16:10本文介绍了IDEA添加Java类注释模版的方法,分享给大家,具体如下:IDEA版本:IntelliJ IDEA 2017.2.5 x64eclipse能在类上方输入/**,回车添加类注释模版,但idea没有默认添加这个功能,需要做一些设置。下面介绍三种... -
Java实现斗地主发牌功能(含按顺序发牌和玩家牌排序显示等功能)
2019-07-26 23:21:36斗地主是全国范围内的一种桌面游戏,尽管全国各种类型,但大同小异,今天我们先来实现一下斗地主中的发牌功能,为了程序的可读性以及可拓展性,此次我们使用面向对象的方法来实现此功能。 首先,斗地主要求有扑克和... -
关于JAVA代理机制的理解和实现
2020-11-08 19:52:28代理类和委托类之间实现间接关联的关系,代理类不是真正的实现委托类的功能,只是作为一个桥梁的作用,通过代理类来间接实现委托类的功能,并且在这期间代理类可以添加更多的功能。 静态代理 静态代理是直接将代理的... -
java基于tcp的聊天程序_java基于TCP协议实现聊天程序
2021-02-26 17:55:04JAVA程序设计之基于TCP协议的socket聊天程序 ,供大家参考,具体内容如下一、程序实现的功能1、进入客户端界面2、创建昵称3、群发信息4、@私聊5、下线通知6、在线人数统计二、整体架构图三、简单介绍本程序实现了... -
java仿qq_「java qq」仿QQ聊天软件java实现(一) - seo实验室
2021-02-12 10:23:04java qq之前学java通信的时候写过简单的通信程序,但比较简陋,于是重新写了一个仿照QQ的聊天软件,主要在界面上做了优化,增加了一些功能。实现的功能有注册、登录、好友列表、分组、黑名单、添加好友、群列表、... -
用java语言写一个简单的栈和队列
2018-11-23 12:49:24一个栈 栈其实相当于线性表,只是少了一些...如果是链表当你取数据读数据只需要将丢掉一个结点或者添加一个结点,也不用扩容要移动数据 栈的具体属性和方法 接下来是代码 package Array; public class MyS... -
java的基础知识运用,一个简单的电商管理系统
2019-07-19 20:07:31完成一个电商系统的商品模块功能,商品类包含以下属性:商品ID,商品名,类别名,单价,库存量,产地,计量单位等信息,要求实现商品管理功能以及管理员登录功能,具体如下: 管理员登录(账号密码固定(123456/...
-
IEXPath.zip
-
xxljob源码分析
-
ThreadLocal全面解析
-
王力安防首次公开发行股票招股说明书.pdf
-
线程状态
-
【写作技巧】毕业论文如何写目录?
-
P4921 [MtOI2018]情侣?给我烧了!
-
5.2 收集需求
-
安装ui库antd
-
漫画算法-学习笔记(11)
-
T/CECC 1 - 2017 电子烟雾化类器具产品通用规范 - 完整中国电子商会团体标准(11页)
-
新亚电子首次公开发行股票招股说明书.pdf
-
CISA培训与认证精讲全套视频.txt
-
基于python的dango框架购物商城毕业设计毕设源代码使用教程
-
云开发后台+微信扫码点餐小程序+cms网页管理后台 含后厨端和用户端
-
第一次云服务器部署
-
CentOS7安装Python3环境(无需修复yum命令)
-
a的b次幂
-
神通科技首次公开发行股票招股说明书.pdf
-
投标方法论