Collection集合
Collection集合
概述:集合是java中提供的一种容器,可以用来存储多个数据。
集合和数组的区别:
- 数组的长度是固定的。集合的长度是可变的
- 数组中存储的是同一类元素,可以存储基本数据类型值。集合存储的都是对象。而对象的类型可以不一致。在开发中一般当对象多的时候,使用集合存储。
集合框架:
集合按照存储结构可以分为两个类:
- 单列集合:java.util.Collection
- 双列集合: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接口中定义了一些通用的方法,这些方法可以用于操作所有单列集合:
- public boolean add(E e):把给定的对象添加到当前集合中
- public void clear:清空集合中所有的元素
- public boolean remove(E e):把给定的对象在当前集合中删除
- public boolean contains(E e):判断当前集合中是否包含给定的对象
- public boolean isEmpty():判断当前集合是否为空
- public int size():返回集合中元素的个数
- 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 类>对象名称
意义:只能接收该类型及其父类