廖雪峰Java5集合-1Java集合简介-1Java结合简介

1.集合

定义:集合就是一堆东西。集合里的东西,称为元素Element

数学中的集合:

  • 有限集合:

    * 一个班所有的学生组成的集合

    * 一个网站所有的商品组成的集合
  • 无限集合:

    * 全体自然数集合

    * 奇数集合

2.计算机中引入集合的意义

为了处理一组数据:

  • 计算所有同学的总成绩和平均成绩
  • 列举所有的商品
  • 遍历页面的所有元素

一个Java对象可以在内部持有若干其他Java对象,并对外提供访问接口,我们把这种Java对象称为集合:

  • Java的数组可以看作是一种集合,例如:
public class Main {
public static void main(String[] args){
String[] ss = new String[10];//可以持有10个String对象
ss[0] = "Hello";//通过索引放入String对象
String first = ss[0];//通过索引获取String对象
}
}

问:有了数组,为什么还要其他集合类?

数组使用起来不灵活:

  • 数组初始化后大小不可变
  • 数组只能按索引顺序存取

因为数组不够灵活,就需要其他各种集合类来处理,如

  • 可变大小的顺序链表
  • 保证无重复元素的集合
  • ...等其他情况.

3.Java集合

jdk自带的java.util提供了所有的集合类

  • Collection:集合类的根接口

    * List:一种有序列表,例如,按索引排列的Student的List

    * Set:一种保证没有重复元素的集合,例如所有无重复Student的Set
  • Map:一种通过Key查找value的映射表集合,同python的dictionary,例如通过name查找对应Student的Map

    廖雪峰Java5集合-1Java集合简介-1Java结合简介

4.java集合设计的特点:

接口和实现相分离:List接口:ArrayList,LinkedList

支持泛型:List list = new ArrayList<>();

访问集合有统一的方法:迭代器Iterator

5.部分类和接口是遗留,不应该再使用

  • 遗留类

    * jdk的部分集合类是遗留类,不应该继续使用:

    * Hashtable:一种线程安全的Map实现

    * Vetor:一种线程安全的List实现

    * Stack:给予Vetor实现的LIFO的栈
  • 遗留接口:

    * Enumeration:已被Iterator取代

6.总结:

  • Java的集合类定义在java.util包中
  • 常用的集合类包括List,Set,Map等
  • Java集合使用统一的Iterator遍历集合
  • 尽量不要使用遗留接口
上一篇:(Question)CSS中position的绝对定位问题


下一篇:【BZOJ1412】狼和羊的故事(网络流)