1 Collection集合
A.结构
1. List集合:有索引、可以存储重复元素、可以保证存取序列
2. ArrayList:底层是数组实现的,查询快、增删慢
3. LinkedList:底层是链表实现的,查询慢,增删快
4. Set集合:无索引、不可以存储重元素、存取无序
5. HashSet:底层是哈希表+(红黑树)实现的,无索引、不可以存储重复元素、存取无序
6. LinkedHashSet:底层哈希表+链表实现,无索引、不可以存储重复元素
7. 底层是底层二叉树。一般用于排序
B.常用方法
1. boolean add(E e);向集合中添加元素
2. boolean remove(E e);删除集合中的某个元素
3. void clear();清空集合所有的元素
4. boolean contain(E e);判断集合中是否包含某个元素
5. boolean isEmpty();判断集合中是否为空
6. int size();获取集合的长度
7. Object[] toArray();将集合转成一个数组
2
3
4
import java.util.ArrayList;
import java.util.Collection;
public class Demo06Generic {
public static void main(String[] args) {
Collection<Integer> list1 = new ArrayList<Integer>();
Collection<String> list2 = new ArrayList<String>();
Collection<Number> list3 = new ArrayList<Number>();
Collection<Object> list4 = new ArrayList<Object>();
getElement1(list1);
getElement1(list3);
getElement2(list3);
getElement2(list4);
}
public static void getElement1(Collection<? extends Number> coll){
}
public static void getElement2(Collection<? super Number> coll){
}
}
5 斗地主示例
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
public class doudizhu {
public static void main(String[] args) {
String[] color = {
"♥","♠","♣","♦"};
String[] num = {
"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
ArrayList<String> sum = new ArrayList<>();
for (String c:color) {
for (String n : num ) {
sum.add(c+n);
}
}
sum.add("SmallKing");
sum.add("LargeKing");
System.out.println("54张牌如下:");
System.out.println(sum.toString());
Collections.shuffle(sum);
System.out.println("洗牌如下:");
System.out.println(sum.toString());
ArrayList<String> per1 = new ArrayList<>();
ArrayList<String> per2 = new ArrayList<>();
ArrayList<String> per3 = new ArrayList<>();
ArrayList<String> rest = new ArrayList<>();
ArrayList<ArrayList> people = new ArrayList<>();
for (int i = 0; i < 17; i++) {
people.add(per1);
people.add(per2);
people.add(per3);
}
for (int i = 0; i < 51; i++) {
people.get(i).add(sum.get(i));
}
for(int i = 51 ; i <54 ; i++) {
rest.add(sum.get(i));
}
System.out.println("第一个人的牌为:");
System.out.println(per1.toString());
System.out.println("第二个人的牌为:");
System.out.println(per2.toString());
System.out.println("第三个人的牌为:");
System.out.println(per3.toString());
System.out.println("底牌为:");
System.out.println(rest.toString());
}
}