天天看点

Collection集合Collection集合

Collection集合

Collection集合

概述:集合是java中提供的一种容器,可以用来存储多个数据。

集合和数组的区别:

  1. 数组的长度是固定的。集合的长度是可变的
  2. 数组中存储的是同一类元素,可以存储基本数据类型值。集合存储的都是对象。而对象的类型可以不一致。在开发中一般当对象多的时候,使用集合存储。

集合框架:

集合按照存储结构可以分为两个类:

  1. 单列集合:java.util.Collection
  2. 双列集合:java.util.Map

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

Collection接口中定义了一些通用的方法,这些方法可以用于操作所有单列集合:

  1. public boolean add(E e):把给定的对象添加到当前集合中
  2. public void clear:清空集合中所有的元素
  3. public boolean remove(E e):把给定的对象在当前集合中删除
  4. public boolean contains(E e):判断当前集合中是否包含给定的对象
  5. public boolean isEmpty():判断当前集合是否为空
  6. public int size():返回集合中元素的个数
  7. public Object[] toArray():把集合中的元素存储到数组中

Iterator迭代器

Iterator接口:在程序开发中,经常需要遍历集合中的元素。针对这种需求,JDK专门设置了一种接口java.util.Iterator。Iterator接口也是Java集合中的一员,但它与Collection,Map接口有所不同的,Collection接口与Map接口主要是用于存储元素,而Iterator接口主要用于遍历Collection中的元素。

获取迭代器的方法:

public Iterator iterator():获取集合中对应的迭代器,用来遍历集合中的元素。

Iterator接口的常用方法如下:

public E next():返回迭代的下一个元素

public boolean hasNext():如果仍有元素可以迭代,则返回true

泛型

集合中引入泛型的好处:

将运行时期的ClassCastException,转移到了编译时期变为了编译失败。

避免了类型强转的麻烦。

泛型方法:泛型可以加到方法上。可以用来表示接受参数的类型和返回参数的类型。

package com.review;
public class GenericDemo {
    public static void main(String[] args) {
        //定义数组
        Integer [] arr1=new Integer[]{1,2,3};
        String [] arr2=new String[]{"a","b","c"};
        printArray(arr1);
        printArray(arr2);
    }
    //定义一个泛型方法来打印数组
    public static <E> void printArray(E [] array){
        for (E element:array){
            System.out.print(element+" ");
        }
        System.out.println(" ");
    }
}
           

泛型通配符

当使用泛型类或接口时,传递的数据中,泛型类型不确定,可以通过通配符<?>表示。但是一旦使用泛型的通配符后,只能使用Object类中的共性方法,集合中元素中的自身方法不能使用

通配符基本使用

泛型的通配符:不知道使用什么类型来接收的时候,此时可以使用?,?表示未知通配符

此时只能接收数据,不能往该集合中存储数据

通配符的高级使用—受限泛型

泛型的上限:

格式:类型名称 <? extends 类>对象名称

意义:只能接收该类型及其子类

泛型的下限:

格式:类型名称<? super 类>对象名称

意义:只能接收该类型及其父类

继续阅读