在我们的日常工作与生活当中,java都有涉及到。它具有十分强大的功能,并且内容也极其丰富,使用频率也是很高的,所以大家对于java的学习热情也是十分积极的。今天就来为大家介绍java字典,多层字典,斗地主发牌的实例展示,一起来看看吧。

首先是一个简单的介绍,如下所示:

字典 Map 存键值对

/       \

hashmapLinkedHashMap

数组+链表和数组+双链表(有序)

自定义键对象(不能重)需要重写键的hashCode()方法、equals()方法。

map实例代码如下:import java.util.Map;

import java.util.Set;

public class Demo01

{

public static void main(String[] args)

{

Map  map = new HashMap  ();

map.put("a", "12"); //添加

map.put("b", "1");

map.put("a", "2"); //覆盖a的值

System.out.println(map); //{a=2,b=1} 无顺序

//String v=map.remove("b");//删除键的值 返回

//System.out.println(v);

System.out.println(map.get("a")); //取值  没有返回null

// 通过keyset遍历map 增强for

// Map不能直接用 迭代器/增强for 遍历 需要转Set才能用

Set  keys = map.keySet(); // 返回集合中所有键

for (String key: keys)

{

String value = map.get(key); // 获取键的值

System.out.println(key + "..." + value);

}

//通过Iterater

Set  keys2 = map.keySet();

Iterator  it = keys2.iterator();

while (it.hasNext())

{

String key = it.next();

String value = map.get(key);

System.out.println(key + "..." + value));

}

//增强for + entrySet方法(键值对对象)

Set > entrys = map.entrySet();

for (Map.Entry  entry: entrys)

{

String key = entry.getKey();

String value = entry.getValue();

System.out.println(key + "..." + value);

}

//Iterater遍历

Set > entrys2 = map.entrySet();

Iterator > it2 = entrys.iterator();

while (it2.hasNext())

{

Map.Entry  entry2 = it2.next();

String key2 = entry2.getKey();

String value2 = entry2.getValue();

System.out.println(key2 + "..." + value2);

}

}

}

Map  map = new HashMap  (); //键内容不重

map.put(new Student("lisi", 28), "上海"); // Student重写HashCode()、equals()

多层字典实例代码如下:HashMap > oracle = new HashMap > ();

HashMap  java0601 = new HashMap  ();

java0601.put("001", new Person("小红帽", 18));

java0601.put("002", new Person("小丸子", 20));

HashMap  java0929 = new HashMap  ();

java0929.put("001", new Person("张超", 22));

java0929.put("002", new Person("赵玉仙", 21));

oracle.put("java0601", java0601);

oracle.put("java0929", java0929);

//遍历  增强for+keyset

Set  classes = oracle.keySet(); //所有键 集合   班级名字集合

for (String clas: classes)

{

HashMap  c = oracle.get(clas); //获取班级集合 值

Set  stunumbers = c.keySet(); // 人名集合 键

for (String num: stunumbers)

{

Person p = c.get(num); //人名集合 值

System.out.println("班级" + clas + "学号" + num + "学生" + p);

}

}

斗地主发牌实例代码如下:public static void main(String[] args)

{

//准备容器                                    //牌序  牌值

HashMap  pookerMap = new HashMap  ();

ArrayList  pookerNumer = new ArrayList  (); //牌序

//准备牌

String[] number = {

"2"

, "A"

, "K"

, "Q"

, "J"

, "10"

, "9"

, "8"

, "7"

, "6"

, "5"

, "4"

, "3"

};

String[] color = {

"♥"

, "♦"

, "♣"

, "♠"

};

int index = 2;

for (String num: number)

{

for (String col: color)

{

pookerMap.put(index, col + num); //向Map中添加  牌序:牌值

pookerNumer.add(index); //向ArrayList添加  牌序号

index++;

}

}

//添加大小王

pookerMap.put(0, "大王");

pookerNumer.add(0);

pookerMap.put(1, "小王");

pookerNumer.add(1);

System.out.println(pookerMap);

//洗牌、发牌

Collections.shuffle(pookerNumer); //打乱  ArrayList 牌序号

ArrayList  player1 = new ArrayList  ();

ArrayList  player2 = new ArrayList  ();

ArrayList  player3 = new ArrayList  ();

ArrayList  bottom = new ArrayList  ();

for (int i = 0; i

{ //分发  牌序号

if (i

{

bottom.add(pookerNumer.get(i));

} // 前三个序号 添加 底牌

else if (i % 3 == 0)

{

player1.add(pookerNumer.get(i));

}

else if (i % 3 == 1)

{

player2.add(pookerNumer.get(i));

}

else if (i % 3 == 2)

{

player3.add(pookerNumer.get(i));

}

}

//对三个玩家的牌 排序

Collections.sort(player1);

Collections.sort(player2);

Collections.sort(player3);

Collections.sort(bottom);

//看牌

lookPooker("玩家1", player1, pookerMap); // 名称  牌序号  字典

lookPooker("玩家2", player2, pookerMap);

lookPooker("玩家3", player3, pookerMap);

lookPooker("底牌", bottom, pookerMap);

}

public static void lookPooker(String name, ArrayList  player, HashMap  pookerMap)

{

System.out.println(name + ": ");

for (int index: player)

{

System.out.print(pookerMap.get(index) + " "); // 对应字典 找出 牌序号的 值

}

System.out.println();

}

以上就是关于java字典,多层字典,斗地主发牌的主要实例展示了。如果你对java知识感兴趣,想要了解更多java经典例子和常见问题,敬请关注奇Q工具网。

推荐阅读:

java获取字典所有的key_java字典,多层字典,斗地主发牌,实例展示相关推荐

  1. JAVA获取优酷、土豆、酷6等视频实例

    通过JAVA获取优酷.土豆.酷6.6间房.56视频,现在很多社会网站都有这个功能,用户输入优酷.土豆.酷6.6间房.56视频地址后,能找到对应的视频及视频的缩略图,有些社区网站还能获取到视频的时长. ...

  2. Java获取系统当前时间

    本篇文章帮大家学习java获取系统当前时间,包含了Java获取系统当前时间使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. 以下实例演示了如何使用 Date 类及 Simp ...

  3. python遍历多层字典_Python遍历嵌套字典的几种方法

    文 | 猿天罡 前言 为了让小伙伴们不耗费多余的注意力,我们举的例子都尽可能的简单,不信你回去看看,字典键对应的值都是基本数据类型(字符串.数字等). 其实,字典里键对应的值可以很复杂. 我们可以在字 ...

  4. redis session java获取attribute_redis里的数据结构

    Redis作为当前使用非常广泛的内存数据库,在代码层面做了很多极致的优化,已获取更好的性能.其中重要的一部分,就是对于底层数据结构的使用.Redis会根据数据量.数据大小等来优化对于不同结构的使用,从 ...

  5. python的内置字典数据类型_python 数据类型元组与字典内置方法

    1.元组 (1)元组是不可变的列表,能存多个值:如果多个值只有取得需求,没有改的需求,用元组最合理 (2)定义:在()内用逗号隔开,可以存任意类型的值 注意:当元组只有一个元素时,要在后面加逗号 # ...

  6. python语言通过字典实现映射关系_mpython3丨字典的使用介绍

    本帖最后由 念白 于 2020-5-30 16:25 编辑 在之前的帖子解析列表.元组.字符串中介绍过了列表的用法,列表可以添加.修改.删除.查询. 能不能用列表制作一个资料管理器呢?其实是可以的.我 ...

  7. python字典遍历取值_Python中字典的使用

    字典(dictionary)是除列表以外Python中最灵活的数据类型 字典也可以用来存储多个数据 和列表的区别 列表是有序的对象集合 字典是无序的对象集合 字典用{}定义 字典使用键值对存储数据,键 ...

  8. # 遍历删除字典元素_第六章 字典

    一.使用字典 一个简单的字典 字典是一系列键--值对.每个键都与一个值相关联,可以使用键来访问与之相关联的值.与键相关联的值可以是数字.字符串.列表乃至字典.事实上,可将任何Python对象用作字典中 ...

  9. python字典和集合双向索引_Python字典和集合

    字典和集合基础字典是一系列无序元素的组合,其长度大小可变,元素可以任意的删减和改变.不过,这里的元素是一堆键(key)和值(value)的配对. 集合没有键和值的配对,是一系列无序的.唯一的元素组合. ...

最新文章

  1. 听听阿里老哥对算法工程师技术学习路线的建议
  2. Mac-OSX的Python3.5虚拟环境下安装Opencv
  3. luogu_2107【题解】
  4. 你适合编程吗?你喜欢编程吗?
  5. LSMW批处理使用方法(05)_步骤3下
  6. jcmd_程序化JCMD访问
  7. docker 容器端口访问不到_docker容器无法访问宿主机端口的解决
  8. 计算机硬件系统教具,计算机硬件系统 (2)
  9. 爬虫库之BeautifulSoup学习(五)
  10. java控制台代码_Java控制台常用命令
  11. Thread 线程基础之-线程相关知识
  12. 比python更精简的语言,两行代码抓取淘宝/京东平台的商品数据--Uibot
  13. 嵌入式linux开发实战——项目1认识嵌入式系统
  14. 图像处理中的二阶矩矩阵(结构张量)
  15. Word给自动生成的目录页码添加括号
  16. 传奇服务器怎么修改升级武器成功,传奇论坛服务端教程原创升级武器不碎完整脚本...
  17. Element修改图标大小,设置颜色
  18. [ 网络协议篇 ] IGP 详解之 RIP 详解(一)
  19. java 配置文件乱码_java程序读取properties配置文件出现中文乱码
  20. 支付宝《神奇海洋》素材

热门文章

  1. localhost:8080打不开本地网页
  2. 精读4:一个和钱打交道的数据分析行业
  3. Java笨狗groovy学习笔记—Regular Expressions
  4. 我国工业自动化市场现状分析报告
  5. 空气传导和骨传导耳机哪个好?这两种耳机有什么区别?
  6. lucene spatial 6.1搜索附近的饭店
  7. 以WhatsApp为例,外贸人如何从0到1构建社交营销闭环全流程
  8. 10676 涂鸦跳跃(sort)
  9. JavaScript实现5星好评制作
  10. VMware 8.0 安装 FC5 的VMware tools