1.数学集合:
2.在软件开发中应用广泛:商品列表
3.Java中使用接口Collection定义了集合概念。Collection接口中定义了集合的功能抽象:添加元素、删除元素、集合的并、集合的交、集合的差,. . . .
4.Java中提供了集合的实现类:ArrayList、LinkedList、HashSet等
5.LinkedList是使用的双向循环链表实现的线性表集合。ArrayList是使用变长数组实现的线性表集合。
6.常用子接口是线性表(List接口)与散列表(Set接口)。
7.List:线性表结构的集合,有序的,可以对列表中每个元素的插入位置进行精确地控制。列表通常允许重复的元素。
8.HashMap:由键值与值构成,键值是唯一的,且每一个键值对应一个值(此值可以为一个类)。
9.Set:使用HashMap实现的,无序且不重复。HashSet相当于仅保留key情况的HashMap,真正数学意义上的集合。顺序仅与散列数有关,即顺序由散列数决定。不可用于随机。
10.List:ArrayList(新)与Vector(旧)几乎完全一样,ArrayList(新)速度快,线程不安全,Vector(旧,1.2之前)速度慢,线程安全
Map:
11.HashMap与Hashtable几乎完全一样,HashMap(新)速度快,线程不安全,Hashtable(旧,1.2之前)速度慢,线程安全。??
ArrayLise:
public static void main(String[] args) { List Cards =new ArrayList(); for(int i=Card.THREE;i<=Card.TWO;i++){ Cards.add(new Card(Card.CLUB,i)); Cards.add(new Card(Card.HEART,i)); Cards.add(new Card(Card.SPADE,i)); Cards.add(new Card(Card.DIAMOND,i)); } Cards.add(new Card(Card.BLACK,Card.JOKER)); Cards.add(new Card(Card.RED,Card.JOKER)); System.out.println(Cards); System.out.println(Cards.get(3)); //洗牌 Random tmpRandom=new Random(); Card tmpCard=new Card(); int tmpNum=0; for(int j=Cards.size()-1;j>0;j--){ // tmpNum=tmpRandom.nextInt(j); // tmpCard=(Card) Cards.set(tmpNum, Cards.get(j)); // Cards.set(j, tmpCard); Cards.set(j, Cards.set(tmpRandom.nextInt(j), Cards.get(j))); } System.out.println(Cards); } |