java集合类的数据结构灵活应用

package cn.itcast_03;

import java.util.ArrayList;
import java.util.Collections;

/*
* 模拟斗地主洗牌和发牌

* 分析:
*   A:创建一个牌盒
*   B:装牌
*   C:洗牌
*   D:发牌
*   E:看牌
*/
public class PokerDemo {
public static void main(String[] args) {
  // 创建一个牌盒
  ArrayList<String> array = new ArrayList<String>();

// 装牌
  // 黑桃A,黑桃2,黑桃3,...黑桃K
  // 红桃A,...
  // 梅花A,...
  // 方块A,...
  // 定义一个花色数组
  String[] colors = { "", "", "", "" };
  // 定义一个点数数组
  String[] numbers = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10",
    "J", "Q", "K" };
  // 装牌
  for (String color : colors) {
   for (String number : numbers) {
    array.add(color.concat(number));
   }
  }
  array.add("小王");
  array.add("大王");

// 洗牌
  Collections.shuffle(array);

// System.out.println("array:" + array);

// 发牌
  ArrayList<String> fengQingYang = new ArrayList<String>();
  ArrayList<String> linQingXia = new ArrayList<String>();
  ArrayList<String> liuYi = new ArrayList<String>();
  ArrayList<String> diPai = new ArrayList<String>();

for (int x = 0; x < array.size(); x++) {
   if (x >= array.size() - 3) {
    diPai.add(array.get(x));
   } else if (x % 3 == 0) {
    fengQingYang.add(array.get(x));
   } else if (x % 3 == 1) {
    linQingXia.add(array.get(x));
   } else if (x % 3 == 2) {
    liuYi.add(array.get(x));
   }
  }

// 看牌
  lookPoker("风清扬", fengQingYang);
  lookPoker("林青霞", linQingXia);
  lookPoker("刘意", liuYi);

lookPoker("底牌", diPai);
}

public static void lookPoker(String name, ArrayList<String> array) {
  System.out.print(name + "的牌是:");
  for (String s : array) {
   System.out.print(s + " ");
  }
  System.out.println();
}
}

测试多次
输出:

风清扬的牌是:小王 8 10 5 Q 4 7 8 9 A 4 7 2 6 7 8 9 
林青霞的牌是:Q 5 9 A 6 3 Q 7 10 K K K 3 10 8 6 5 
刘意的牌是:2 3 A J Q J J 4 K 4 6 5 J 3 2 大王 9 
底牌的牌是:A 2 10 
输出:风清扬的牌是:2 7 9 9 3 7 A Q 2 4 J 4 A 5 3 K 5 
林青霞的牌是:10 8 2 Q 8 K 3 4 7 6 9 Q 10 3 5 小王 J 
刘意的牌是:4 2 J 7 K 8 6 J 10 A 10 8 5 Q 9 6 K 
底牌的牌是:6 大王 A

先保存在这里,慢慢领悟

时间: 2024-10-11 00:44:56

java集合类的数据结构灵活应用的相关文章

(4)java数据结构--集合类及其数据结构归纳

Java集合类及其数据结构归纳 - s小小的我 - 博客园http://www.cnblogs.com/shidejia/p/6433788.html 上面这张图总结了java集合类的继承结构,下面是对集合类的一些总结和特性描述: Collection Collection是一个接口,是高度抽象出来的集合,它包含了集合的基本操作:添加.删除.清空.遍历.是否为空.获取大小.是否保护某元素等等.Collection接口的所有子类(直接子类和间接子类)都必须实现2种构造函数:不带参数的构造函数和参数

JAVA中的数据结构——集合类(序):枚举器、拷贝、集合类的排序

枚举器与数据操作 1)枚举器为我们提供了访问集合的方法,而且解决了访问对象的“数据类型不确定”的难题.这是面向对象“多态”思想的应用.其实是通过抽象不同集合对象的共同代码,将相同的功能代码封装到了枚举器的这个接口里,就可以用一套代码来遍历不同类型的集合. 2)每个集合类(Vector或Hashtable等)都有一个iterator方法,各集合对象可以通过这个方法把遍历本类的控制权交给Iterator接口. 3)Iterator接口提供了boolean hasNext()方法判断是否到了集合的最后

Java集合类——数据结构入门

前言 要谈集合类,那必然绕不开数据结构.像ArrayList底层由数组实现,使用的是线性表的顺序存储结构:LinkedList使用的是线性表的链式存储结构:而HashMap则使用了散列存储结构......,等等这些,不一而足.可见集合类和数据结构之间关系之紧密. 很明显,想要深入集合类的源码,必须具备一定程度的数据结构经验,这样才能起到事半功倍效果 一.数据结构 数据结构是相互之间存在一种或多种特定关系的数据元素的集合(这是严蔚敏版<数据结构>给出的经典定义).简单来说,只要存在一堆数据,这些

Java集合类: Set、List、Map、Queue使用

目录 1. Java集合类基本概念 2. Java集合类架构层次关系 3. Java集合类的应用场景代码 1. Java集合类基本概念 在编程中,常常需要集中存放多个数据.从传统意义上讲,数组是我们的一个很好的选择,前提是我们事先已经明确知道我们将要保存的对象的数量.一旦在数组初始化时指定了这个数组长度,这个数组长度就是不可变的,如果我们需要保存一个可以动态增长的数据(在编译时无法确定具体的数量),java的集合类就是一个很好的设计方案了. 集合类主要负责保存.盛装其他数据,因此集合类也被称为容

转载:java集合类数据结构分析

数组是 最常用的数据结构.数组的特点是长度固定,可以用下标索引,并且所有的元素的类型都是一致的.数组常用的场景有把:从数据库里读取雇员的信息存储为 EmployeeDetail[],把一个字符串转换并存储到一个字节数组中便于操作和处理,等等.尽量把数组封装在一个类里,防止数据被错误的操作弄 乱.另外,这一点也适合其他的数据结构. 列表和 数组很相似,只不过它的大小可以改变.列表一般都是通过一个固定大小的数组来实现的,并且会在需要的时候自动调整大小.列表里可以包含重复的元素.常用的 场景有,添加一

针对Java集合类的小总结

Java集合类包位于java.util下,有很多常用的数据结构:数组.链表.队列.栈.哈希表等等.了解不同的集合类的特性在开发过程中是比较重要的,感谢@兰亭风雨的专栏分析,这里我也根据自己的理解做轻度的总结,不再进行分析,因为上面的博客分析已经相当优秀. List接口实现,一般常用的为ArrayList和LinkedList,还有不太常用的Vector,Stack.比如JDK文档声明 Deque 接口及其实现提供了 LIFO 堆栈操作的更完整和更一致的 set,应该优先使用此 set,而非Sta

java的动态数据结构和泛型

动态数据结构和泛型 0 详细介绍java中的数据结构 1 1 List 5 1.1 ArrayList 5 2 Set 6 2.1 HashSet与TreeSet的区别 6 3 Map 8 4 迭代器 9 5 泛型 9 0 详细介绍java中的数据结构 也许你已经熟练使用了java.util包里面的各种数据结构,但是我还是要说一说java版数据结构与算法,希望对你有帮助. 线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类

Java集合类汇总记录-- apache.commons4(TreeList)

通常,Tree是Tree,List是List,两者不太可能混在一起.但apache-commons库却用tree实现了实现了List的接口,也就是TreeList类.与标准的LinkedList相比,TreeList稍微浪费一点空间,但常用操作的时间复杂度均降低到了O(log N),值得在开发中权衡利弊.合理应用. 内部数据结构 TreeList内部包含了一个Thread AVL Tree.AVL Tree很常见了,是一种典型的Balanced Binary Tree,但下面简单介绍下Threa

Java集合类相关面试题

1.Collection和Collections的区别 java.util.Collection 是一个集合接口,Collection接口在Java类库中有很多具体的实现,例如List.Set java.util.Collections 是针对集合类的一个帮助类,它提供了一系列的静态方法实现对各种集合的搜索.排序.线程安全化等操作. 2.ArrayList与Vector的区别 这两个类都实现了List接口(List接口继承自Collection接口).它们都是有序集合,它们内部的元素都是可以重复