Java集合类之Collection接口

来源:互联网 发布:js 短路 编辑:程序博客网 时间:2024/05/18 15:56

在前面我们学过数组数组由于是固定长度所以在某些情况下并不能试用。在jdk中提供了一系列的特殊的类,这些类可以储存任意类型的对象,并且长度可变,统称为集合,这些类在java.util包中,在使用的时候一定要注意导包的问题。
集合按照储存结构可以划分为两大类,既单列集合Collection和双列集合Map,这两个集合具有以下特点;

  • Collection:单列集合类的根接口,用于储存一系列符合某种规则的元素,它有两个重要的子接口,分别是List和Set接口,其中List的特点是元素有序,元素可重复性。Set类的特点是元素无序并且不可重复。List接口的主要实现类是ArrayList和LinkedList,Set接口的主要实现类有HashSet和TreeSet。

  • Collection:单列集合类的根接口,用于储存一系列符合某种规则的元素,它有两个重要的子接口,分别是List和Set接口,其中List的特点是元素有序,元素可重复性。Set类的特点是元素无序并且不可重复。List接口的主要实现类是ArrayList和LinkedList,Set接口的主要实现类有HashSet和TreeSet。

这里写图片描述

下面我们来进行讲解Collection接口中的子接口;
  • List接口:继承于Collection接口是单列集合的一个重要的分支;习惯性地会将实现了LIst接口得对象称为List接口,在List集合中允许出现重复的元素;所有的元素是以一个线性方式进行储存,在程序中可以通过索引来访问集合中的指定元素;另List接口还有另外一个特点就是元素有序,在元素中存入顺序和取出的顺序一致。
    这里写图片描述
  • List的子接口ArrayList接口:是List接口的实现类也是程序中最常见的一种集合;在ArrayList内部封装了一个长度可变的数组对象,当存入元素的时候ArrayList就会在内存中创建一个更大的数组类进行储存这些元素;因此可以将ArrayList接口看作一个可变的数组;但是ArrayList集合底层是使用数组来进行保存元素;在增删改除的时候效率会比较低,但是查找元素很方便;
    这里写图片描述
  • List的子接口linkedList接口:LInkedlist是使用双向循环链表在集合的内部,所以linkedList在进行增删操作的时候具有很大效率;
    这里写图片描述

  • Iterator接口:在程序的开发中经常需要遍历集合中的所有元素;针对这种需求,JDK专门提供了一个借口iterator接口,也是java集合框架中的一员;但是和Collection以及Map接口不同,它是主要用于遍历Collection中的元素;因此iterator对象也被称为迭代器;

package text;import java.util.Iterator;import java.util.LinkedList;public class Text2 {    public static void main(String[] args) {        LinkedList li = new LinkedList();        li.add(123);        li.add(456);        li.add("最帅");        Iterator it = li.iterator();// 获取迭代器        while (it.hasNext()) {// 判断下一个指针是否为空,为空返回false,不为空返回true            Object obj = it.next();// 把下一个指针的值返回给一个Object变量            System.out.println(obj);// 输出Object变量        }    }}

JDK5.0新特性-foreach循环

虽然迭代器可以用来遍历集合中的元素;但是写法上比较繁琐为了简化书写JDK提供了foreach循环,是一种更加简洁的书写方式;语法如下
for(容器中元素类型 临时变量:容器变量){    执行语句;    }
package text;import java.util.Iterator;import java.util.LinkedList;public class Text2 {    public static void main(String[] args) {        LinkedList li = new LinkedList();        li.add(123);        li.add(456);        li.add("最帅");        for(Object obj:li){            System.out.println(obj);        }    }}

注意:foreach遍历数组虽然方便但是存在一定的局限性;当使用foreach循环遍历集合的时候就只能访问集合中的元素;不能对其中的元素进行修改,但是for循环中可以对遍历出来的结果进行修改,同样迭代器同样也可以达到。

0 0
原创粉丝点击