疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java集合类: Set、List、Map、Queue使用场景梳理


 

   

  本文主要关注Java编程中涉及到的各种集合类,以及它们的使用场景

 

  目录

  1. Java集合类基本概念

  2. Java集合类架构层次关系

  3. Java集合类的应用场景代码

  1. Java集合类基本概念

  在编程中,常常需要集中存放多个数据。从传统意义上讲,数组是我们的一个很好的选择,前提是我们事先已经明确知道我们将要保存的对象的数量。一旦在数组初始化时指定了这个数组长度,这个数组长度就是不可变的,如果我们需要保存一个可以动态增长的数据(在编译时无法确定具体的数量),java的集合类就是一个很好的设计方案了。

  集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。所以的集合类都位于java.util包下,后来为了处理多线程环境下的并发安全问题,java5还在java.util.concurrent包下提供了一些多线程支持的集合类。

  在学习Java中的集合类的API、编程原理的时候,我们一定要明白,"集合"是一个很古老的数学概念,它远远早于Java的出现。从数学概念的角度来理解集合能帮助我们更好的理解编程中什么时候该使用什么类型的集合类。

  Java容器类类库的用途是"保存对象",并将其划分为两个不同的概念:

  复制代码

  复制代码

  1) Collection

  一组"对立"的元素,通常这些元素都服从某种规则

  1.1) List必须保持元素特定的顺序

  1.2) Set不能有重复元素

  1.3) Queue保持一个队列(先进先出)的顺序

  2) Map

  一组成对的"键值对"对象

  复制代码

  复制代码

  Collection和Map的区别在于容器中每个位置保存的元素个数:

  1) Collection 每个位置只能保存一个元素(对象)

  2) Map保存的是"键值对",就像一个小型数据库。我们可以通过"键"找到该键对应的"值"

  2. Java集合类架构层次关系

  复制代码

  复制代码

  1. Interface Iterable

  迭代器接口,这是Collection类的父接口。实现这个Iterable接口的对象允许使用foreach进行遍历,也就是说,所有的Collection集合对象都具有"foreach可遍历性"。这个Iterable接口只

  有一个方法: iterator()。它返回一个代表当前集合对象的泛型迭代器,用于之后的遍历操作

  1.1 Collection

  Collection是最基本的集合接口,一个Collection代表一组Object的集合,这些Object被称作Collection的元素。Collection是一个接口,用以提供规范定义,不能被实例化使用

  1) Set

  Set集合类似于一个罐子,"丢进"Set集合里的多个对象之间没有明显的顺序。Set继承自Collection接口,不能包含有重复元素(记住,这是整个Set类层次的共有属性)。

  Set判断两个对象相同不是使用"=="运算符,而是根据equals方法。也就是说,我们在加入一个新元素的时候,如果这个新元素对象和Set中已有对象进行注意equals比较都返回false,

  则Set就会接受这个新元素对象,否则拒绝。

  因为Set的这个制约,在使用Set集合的时候,应该注意两点:1) 为Set集合里的元素的实现类实现一个有效的equals(Object)方法、2) 对Set的构造函