Java中的集合类型体系

一、集合的概念

Java中的集合类统一封装在java.util包中,是一个用来存放对象的容器

1、集合只能存放对象。如果存入基本数据类型,集合会将其自动转换成其封装类存入,Java中每一种基本数据类型都有对应的引用类型;

2、集合存放的对象的引用,而非对象本身。所以我们称集合中的对象就是集合中对象的引用。对象本身还是放在堆内存中。

3、集合可以存放不同类型,不限数量的数据类型。

1.1、集合的两大的部分:

1、集合主要分为Collection接口Map接口

2、Collection接口分别被Queue、List和Set三个接口继承;

3、List接口被AbstractList实现,分为三个子类:LinkedList、ArrayList、Vector; 元素按进入先后有序保存,可重复,元素有序 ;

4、Set接口被AbstractSet实现,分为两个子类:HashSet、TreeSet;仅接收一次,不可重复,元素无序 ;

5、Map接口被AbstractMap实现,分为两个子类:HashMap、TreeMap;

6、Map接口被HashTable实现。

1.2、集合和数组的区别

img

二、Collection接口

Collection是一个高度封装的集合接口,继承自Iterable接口,它提供了所有集合要实现的默认方法。由于Iterable封装了Iterator迭代器,因此Collection可以使用Iterator迭代器。

Collection分别有QueueListSet三个子接口,一个AbstractCollection抽象类。由于Collection接口没有可用的实现类,所以在使用Collection时,必须使用它的子类或子接口。

2.1、List

2.1.1、List接口有如下特点:

  • 有序的集合。存储顺序和获取元素的顺序都是一致的;
  • 可重复。允许存储重复的元素;提供索引。
  • 提供一些索引的方法,供用户操作。

List接口下有4个实现类,分别为:LinkedList、ArrayList、Vector和Stack

2.1.2、ArrayList

2.2、Set

三、Map接口

四、Iterator迭代器

4.1、Iterator接口是Java中集合的顶层接口。(不包含Map系列接口,Map接口是Map系列集合的顶层接口)。

三个方法:

1、Object next():返回迭代器刚越过元素的引用,返回值是Object,需要根据需要强制转换;

2、boolean hashNext():判断迭代器中是否还有供访问的元素;

3、void remove():删除迭代器中越过的元素。

除了Map集合系列,程序都可以通过Iterator迭代器来遍历集合中的元素。

4.2、Iterator与Iterable

Iterable接口封装在java.util包中,

public interface Iterable<T>{
    /**
    * Returns an iterator over elements of type {@code T}
    *
    * @return an Iterator
    */
    Iterator<T> iterator();
    ...
}

从上面代码可以看出,Iterable接口封装了Iterator接口,所以只要子类实现了Iterable接口,就可以使用Iterator迭代器的功能了。

4.3、ListIterator接口

由于Iterator值提供了next()、hashNext()、remove()功能,如果我们想在使用迭代器遍历的同时添加元素,该怎么办呢?

这里提供两种方式:

1、自定义接口或者实现类,实现Iterator接口,在自定义实现类或接口中添加相应的功能;

2、使用Iterator的子接口ListIterator

、remove()功能,如果我们想在使用迭代器遍历的同时添加元素,该怎么办呢?

这里提供两种方式:

1、自定义接口或者实现类,实现Iterator接口,在自定义实现类或接口中添加相应的功能;

2、使用Iterator的子接口ListIterator

五、工具类Collections、Arrays及对数组的操作方法


版权声明:本文为qq_41884396原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。