注:
集合的长度是可以随意改变的,但是集合只能存储对象,不能存储基本数据类型,但是可以存储自动封箱之后的基本数据类型(int—>Integer),且集合没有默认值
List,Set,HashMap特点
List:有序的、有索引值、允许重复
Set: 无序的、无索引值、不允许重复
HashMap:会对存入的数据进行自动排序、以键值对的形式存储、键不允许重复、值允许重复
Collection遍历集合的三种方式
1.使用size()和get()进行遍历
2.使用迭代器Iterator进行遍历
3.使用增强for进行遍历
Map集合遍历集合的两种方式
1.使用keyset()进行遍历
先获取所有的keys,在对keys进行遍历,得到单个的key,通过get(key)来获取对应的value。
2.使用entryset()进行遍历
得到单个的夫妻对entry,在通过getKey()和getValue()来获取相应的key和value。
注意:Collection和Map都是集合体系的最顶层,两者没有任何联系
常见异常
1.Collection集合是无法使用add(),会报并发修改异常。而List集合是可以使用add(),不会报异常
在使用迭代器的时候,Collection的Iterator不能添加元素,而list的listIterator可以使用add添加元素,往迭代器中添加。
2.Set集合添加对象,如果想要去重必须重写该对象类中的hashcode()和equals(),如果不重写就能重复添加一个元素
3.TreeSet集合如果想添加多个不重复的对象元素就必须实现改对象类Comparable,并且重写它的compareTo()(比较方法)
可以使用Collections工具类操作集合对象,因为它里面封装了很多操作集合的方法
例如:void copy(目标集合,原集合) 把原集合中的数据复制到目标集合
void shuffle(List list) 随机置换,即打乱集合中元素的顺序
void sort(List list)对集合中的数据进行排序
void swap(List list,int i,int j)将指定列表中的两个索引进行位置置换
斗地主案例
package com.collections;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class DouDiZhu {
public static void main(String[] args) {
/*具体规则:
1. 组装54张扑克牌
2. 将54张牌顺序打乱
3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
4. 查看三人各自手中的牌、底牌
*/
//定义一个集合,用来承装54张牌
List box=new ArrayList();
//把54张牌放到牌盒中
String[] color={
"黑桃"