java获取字典所有的key_java字典,多层字典,斗地主发牌,实例展示
在我们的日常工作与生活当中,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字典,多层字典,斗地主发牌,实例展示相关推荐
- JAVA获取优酷、土豆、酷6等视频实例
通过JAVA获取优酷.土豆.酷6.6间房.56视频,现在很多社会网站都有这个功能,用户输入优酷.土豆.酷6.6间房.56视频地址后,能找到对应的视频及视频的缩略图,有些社区网站还能获取到视频的时长. ...
- Java获取系统当前时间
本篇文章帮大家学习java获取系统当前时间,包含了Java获取系统当前时间使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. 以下实例演示了如何使用 Date 类及 Simp ...
- python遍历多层字典_Python遍历嵌套字典的几种方法
文 | 猿天罡 前言 为了让小伙伴们不耗费多余的注意力,我们举的例子都尽可能的简单,不信你回去看看,字典键对应的值都是基本数据类型(字符串.数字等). 其实,字典里键对应的值可以很复杂. 我们可以在字 ...
- redis session java获取attribute_redis里的数据结构
Redis作为当前使用非常广泛的内存数据库,在代码层面做了很多极致的优化,已获取更好的性能.其中重要的一部分,就是对于底层数据结构的使用.Redis会根据数据量.数据大小等来优化对于不同结构的使用,从 ...
- python的内置字典数据类型_python 数据类型元组与字典内置方法
1.元组 (1)元组是不可变的列表,能存多个值:如果多个值只有取得需求,没有改的需求,用元组最合理 (2)定义:在()内用逗号隔开,可以存任意类型的值 注意:当元组只有一个元素时,要在后面加逗号 # ...
- python语言通过字典实现映射关系_mpython3丨字典的使用介绍
本帖最后由 念白 于 2020-5-30 16:25 编辑 在之前的帖子解析列表.元组.字符串中介绍过了列表的用法,列表可以添加.修改.删除.查询. 能不能用列表制作一个资料管理器呢?其实是可以的.我 ...
- python字典遍历取值_Python中字典的使用
字典(dictionary)是除列表以外Python中最灵活的数据类型 字典也可以用来存储多个数据 和列表的区别 列表是有序的对象集合 字典是无序的对象集合 字典用{}定义 字典使用键值对存储数据,键 ...
- # 遍历删除字典元素_第六章 字典
一.使用字典 一个简单的字典 字典是一系列键--值对.每个键都与一个值相关联,可以使用键来访问与之相关联的值.与键相关联的值可以是数字.字符串.列表乃至字典.事实上,可将任何Python对象用作字典中 ...
- python字典和集合双向索引_Python字典和集合
字典和集合基础字典是一系列无序元素的组合,其长度大小可变,元素可以任意的删减和改变.不过,这里的元素是一堆键(key)和值(value)的配对. 集合没有键和值的配对,是一系列无序的.唯一的元素组合. ...
最新文章
- 听听阿里老哥对算法工程师技术学习路线的建议
- Mac-OSX的Python3.5虚拟环境下安装Opencv
- luogu_2107【题解】
- 你适合编程吗?你喜欢编程吗?
- LSMW批处理使用方法(05)_步骤3下
- jcmd_程序化JCMD访问
- docker 容器端口访问不到_docker容器无法访问宿主机端口的解决
- 计算机硬件系统教具,计算机硬件系统 (2)
- 爬虫库之BeautifulSoup学习(五)
- java控制台代码_Java控制台常用命令
- Thread 线程基础之-线程相关知识
- 比python更精简的语言,两行代码抓取淘宝/京东平台的商品数据--Uibot
- 嵌入式linux开发实战——项目1认识嵌入式系统
- 图像处理中的二阶矩矩阵(结构张量)
- Word给自动生成的目录页码添加括号
- 传奇服务器怎么修改升级武器成功,传奇论坛服务端教程原创升级武器不碎完整脚本...
- Element修改图标大小,设置颜色
- [ 网络协议篇 ] IGP 详解之 RIP 详解(一)
- java 配置文件乱码_java程序读取properties配置文件出现中文乱码
- 支付宝《神奇海洋》素材