arraylist

java -- 集合 - 4(综合案例:斗地主 )

跟風遠走 提交于 2020-01-27 17:56:16
第四章 : 集合综合案例–斗地主 4.1 、斗地主案例的需求分析 案例介绍: 按照斗地主的规则,完成洗牌发牌的动作 具体规则: 使用54张牌打乱顺序,三个玩家参与游戏,三人交题摸牌,没人17张牌,最后三张留作底牌。 4.2 、 准备牌: 牌可以设计为一个ArrayList,每个字符串为一张牌。 每张牌由花色 数字两部分组成,我们可以使用花色集合和数字集合嵌套迭代完成每张牌的组装 牌由Collection类的shuffle方法进行随机排序。 发牌 将每个人以及底牌设计为ArrayList,将最后3张牌直接存放于底牌,剩余牌通过对3取模依次发牌。 看牌: 直接打印每个集合。 代码实现: import java . util . * ; public class DouDiZhu { public static void main ( String [ ] args ) { // 1.准备牌 ArrayList < String > puke = new ArrayList < > ( ) ; // 定义两个数组,一个数组存储花色,一个存储序号 String [ ] colors = { "♠" , "♥" , "♣" , "♦" } ; String [ ] numbers = { "2" , "A" , "K" , "Q" , "J" , "10" , "9" , "8" , "7"

ArrayList集合

你说的曾经没有我的故事 提交于 2020-01-27 17:45:29
ArrayList 类 数组的长度不可以发生改变 但是ArrayList集合的长度是可以随意变化的 对于 ArrayList 来说,有一个尖括号 <E>代表泛型 泛型:也就是装在集合当中的所有元素,全都是统一的什么类型。 注意: 泛型只能是引用类型,不能是基本类型 注意事项: 对于 ArrayList集合 来说, 直接打印得到的不是地址值,而是内容 如果内容是空,得到的是空的中括号:[ ] package cn.itcast.day07.demo04; import java.util.ArrayList; public class Demo02ArrayList { public static void main(String[] args) { // 创建了一个ArrayList集合,集合的名称是list,里面装的全都是String字符串类型的数据 // 备注:从JDK 1.7+开始,右侧的尖括号内部可以不写内容,但是<>本身还是要写的。 ArrayList<String> list = new ArrayList<>(); System.out.println(list); // [] // 向集合当中添加一些数据,需要用到add方法。 list.add("赵丽颖"); System.out.println(list); // [赵丽颖] list.add("迪丽热巴");

讲讲ArrayList的扩容和什么是溢出感知代码

落花浮王杯 提交于 2020-01-27 09:52:29
ArrayList 的扩容分为主动扩容和自动扩容两种。主动扩容就是通过调用 ArrayList 提供的 ensureCapacity() 方法来主动增加 ArrayList 实例的容量。自动扩容就是向 ArrayList 实例添加元素时,如果容量不够,ArrayList 自动扩容的过程。 无论是主动扩容还是自动扩容,最终都是通过 grow() 方法来完成扩容,我们首先来看一下 grow() 方法。 一、扩容方法 grow() grow(int minCapacity) 方法实现的功能用一句话概括就是,如果 minCapacity 小于等于原数组的 1.5 倍,则扩容至原数组的 1.5 倍,如果 minCapacity 大于原数组的 1.5 倍,则扩容至 minCapacity。 请看源码: private void grow ( int minCapacity ) { // overflow-conscious code int oldCapacity = elementData . length ; int newCapacity = oldCapacity + ( oldCapacity >> 1 ) ; // newCapacity 是 oldCapacity 的 1.5 倍 if ( newCapacity - minCapacity < 0 ) newCapacity =

Java中int和Integer的区别

非 Y 不嫁゛ 提交于 2020-01-27 09:29:35
int 是基本类型,直接存数值   integer是对象,用一个引用指向这个对象   1.Java 中的数据类型分为基本数据类型和复杂数据类型   int 是前者>>integer 是后者(也就是一个类)   2.初始化时>>   int i =1;   Integer i= new Integer(1);(要把integer 当做一个类看)   int 是基本数据类型(面向过程留下的痕迹,不过是对java的有益补充)   Integer 是一个类,是int的扩展,定义了很多的转换方法    类似的还有:float Float;double Double;string String等    举个例子:当需要往ArrayList,HashMap中放东西时,像int,double这种内建类型是放不进去的,因为容器都是装 object的,这是就需要这些内建类型的外覆类了。   Java中每种内建类型都有相应的外覆类。   Java中int和Integer关系是比较微妙的。关系如下:   1.int是基本的数据类型;   2.Integer是int的封装类;   3.int和Integer都可以表示某一个数值;   4.int和Integer不能够互用,因为他们两种不同的数据类型;    举例说明   ArrayList al=new ArrayList();   int n=40;  

九章算法 基础 Lecture 4 BFS

∥☆過路亽.° 提交于 2020-01-27 06:58:58
BFS 什么时候使用BFS 图的遍历 traversal in graph 1.1 层级遍历 level order traversal 1.2 由点及面 connected component 1.3 拓扑排序 topological sorting 最短路径 shortest path in simple graph 2.1 仅限简单图求最短路径 2.2 即,途中每条边长度都是 1,且没有方向 最短路径问题可以用BFS或者DP解决 最长路径问题可以用DFS或者DP解决 BFS还有一个东西很重要就是是否需要分层遍历,如果需要分层遍历,需要添加一行代码同时添加一个 for loop。比如说例题 Zombie in Matrix, 例题 Knight shortest path 补充知识 BFS采用 FIFO Queue 实现,DFS采用 Stack 实现。 在JAVA中,Queue 是一个接口,具体实现可以采用LinkedList. LinkedList API remove(), Item, Retrieves and removes the head (first element) of this list. size(), int, Returns the number of elements in this list isEmpty(), boolean, Returns

CoreJava(第五章)04-枚举反射

旧城冷巷雨未停 提交于 2020-01-27 04:58:05
5.4对象包装器与自动装箱 如:Integer对应基本类型int,我们一般称之为"包装器"。 1)对象包装器是不可变的,一旦构造了包装器,就不允许更改包装在其中的值。 2)对象包装器类还是final,因此不能定义它们的子类。 **注:**ArrayList的效率远远低于int[]数组。是因为:每个值分别包装在对象中。 为什么使用ArrayList而不使用int[],是因为在一个小型集合中,操作的便利性要优于执行效率。 有一个更加便于添加 int 类型的元素到ArrayList中 如: // 自动装箱 list . add ( 3 ) ; // 将会自动地转换成 list . add ( Integer . valueOf ( 3 ) ) ; // 这种转换称为自动装箱 // 自动拆箱 int n = list . get ( i ) ; // int n = list.get(i).intValue(); 如:在一个条件表达式中混合使用Integer和Double类型,Integer值就会拆箱,提升为double,在装箱成Double。 Integer n = 1 ; Double m = 3.4 ; System . out . printf ( true ? n : m ) ; 不管是装箱还是拆箱,都是编译器认可的,而不是虚拟机。 例如:我们想要将数字字符串转换成数值。 int

Java学习路线-35:List集合

放肆的年华 提交于 2020-01-27 03:49:16
第29 章 : List集合 125 List接口简介 允许保存重复数据 List新的方法 E get ( int index ) ; E set ( int index , E element ) ; ListIterator < E > listIterator ( ) ; 三个常用子类 ArrayList 90% Vector 8% LinkedList 2% 定义 public class ArrayList < E > extends AbstractList < E > implements List < E > , RandomAccess , Cloneable , java . io . Serializable public class Vector < E > extends AbstractList < E > implements List < E > , RandomAccess , Cloneable , java . io . Serializable public class LinkedList < E > extends AbstractSequentialList < E > implements List < E > , Deque < E > , Cloneable , java . io . Serializable 126

Java的深拷贝和浅拷贝

余生长醉 提交于 2020-01-26 23:15:24
熟悉C++的朋友对这个话题应该很熟悉,浅拷贝就是指两个对象共同拥有同一个值,一个对象改变了该值,也会影响到另一个对象。深拷贝就是两个对象的值相等,但是互相独立。本来想把以前写的一篇文章扩充一下,没想到居然牵扯出很多复杂的问题。本文测试环境是windows xp sp3中文版、NetBeans6.7.1,JDK1.6-update16。这里抛砖引玉,希望大家能提宝贵意见。 首先,Java中常用的拷贝操作有三个,operator = 、拷贝构造函数 和 clone()方法。由于Java不支持运算符重载,我们无法在自己的自定义类型中定义operator=。拷贝构造函数大家应该很熟悉,现在看一下如何支持clone方法: 实现 Cloneable 接口,因为 Object 的 clone 方法将检查类是否实现了 Cloneable 接口,如果没有将抛出异常 CloneNotSupportedException 对象。 Cloneable 接口没有任何方法,只是个标志,所以只需要简单的写上 implements Cloneable 即可。 改写从 Object 继承而来的 clone 方法,使它的访问权限为 public ,因为为了防止意外的支持 clone 操作, Object 的 clone 方法是 protected 权限。 通过上面的分析,可以看出,如果我们要给自己的类添加拷贝功能

文件递归实例

旧城冷巷雨未停 提交于 2020-01-26 20:23:03
import java.io.File; import java.util.ArrayList; public class FileSystem1 { private static ArrayList filelist = new ArrayList(); public static void main(String[] args) { long a = System.currentTimeMillis(); refreshFileList("c:\\java"); System.out.println(System.currentTimeMillis() - a); } public static void refreshFileList(String strPath) { File dir = new File(strPath); File[] files = dir.listFiles(); if (files == null) return; for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { refreshFileList(files[i].getAbsolutePath()); } else { String strFileName = files[i]

java -- 集合 - 3( 泛型 )

偶尔善良 提交于 2020-01-26 19:49:13
第三章 : 泛型 3.1 、泛型概述 在前面学习集合时,我们都知道集合中是可以存放任意对象的,只要把对象存储集合后,那么这是他们会被提升成Object类型。当我们在取出每一个对象,并且进行相应的操作,这是必须采用类型转换。 import java . util . ArrayList ; import java . util . Collection ; import java . util . Iterator ; public class GenericDemo { public static void main ( String [ ] args ) { show01 ( ) ; show02 ( ) ; } // 创建集合对象不使用泛型, // 好处:集合不使用泛型,默认类型就是Object类型,可以存储任意任意类型的数据 // 弊端:不安全,可能会引发异常 private static void show01 ( ) { ArrayList list = new ArrayList ( ) ; list . add ( "abc" ) ; list . add ( 10 ) ; // 使用迭代器遍历list集合 //获取迭代器 Iterator it = list . iterator ( ) ; // 使用迭代器中的方法hasNext和next遍历集合。 while (