Java基础之集合与泛型

一、集合概述
当我们在使用JAVA进行编程开发时 , 经常会遇到一些需要集中存放的多个数据 , 这时我们可以选择“数组”或者“集合” , 关于数组的知识可以参考上一篇文章 , 今天我们主要讲集合的使用 。
集合和数组既然都是容器 , 它们有什么区别呢?
1、数组长度固定 , 集合长度可变 。
数组是静态的 , 一个数组实例具有固定的大小 , 一旦创建了就无法改变容量了 , 而且生命周期也是不能改变的 , 还有数组也会做边界检查 , 如果发现有越界现象 , 会报RuntimeException异常错误 , 当然检查边界会以效率为代价 。而集合的长度是可变的 , 可以动态扩展容量 , 可以根据需要动态改变大小 。
2、数组中只能是同一类型的元素且可以存储基本数据类型和对象 。集合不能存放基本数据类型 , 只能存对象 , 类型可以不一致 。
3、集合以类的形式存在 , 具有封装、继承、多态等类的特性 , 通过简单的方法和属性即可实现各种复杂操作 , 大大提高了软件的开发效率
下面有一张集合家族图:

Java基础之集合与泛型

文章插图
 
由上面的图片可以看出:Java的集合类主要由两个接口派生而出:Collection和Map , Collection和Map是Java集合框架的根接口 。
Java基础之集合与泛型

文章插图
 

Java基础之集合与泛型

文章插图
 
下面我们一步一步来介绍集合家族的成员 。
二、Collection接口
Collection 接口是Set,List,Queue接口的父接口 , 该接口定义的方法可以也可用于操作子接口集合 , 具体方法见下图
Java基础之集合与泛型

文章插图
 
Collection的使用:
1、增加和移除元素
import java.util.ArrayList;import java.util.Collection;/** * Collection的简单使用 */public class Test {public static void main(String[] args) {Collection collection=new ArrayList();//添加元素collection.add("str1");//虽然集合里不能放基本类型的数剧 , 但是jdk支持自动装箱collection.add(4);System.out.println("collection的长度:"+collection.size());//删除指定元素collection.remove(4);System.out.println("collection的长度:"+collection.size());//判断集合是否包含指定字符串System.out.println("判断集合是否包含字符串:"+collection.contains("str1"));collection.add("测试collection");System.out.println("collection:"+collection);}}运行结果:collection的长度:2collection的长度:1判断集合是否包含字符串:falsecollection:[str1, 测试collection]add()方法向Collection中增加元素 , 如果Collection结构改变了 , 作为add()方法的结果 , 将返回true 。
如果一个Set的实例中已经存在了这个元素 , 那么不会重复增加 , 这个Set实例的结构也不会发生变化 。
如果在一个List上调用这个方法 , 而这个List已经存在了这个元素 , 那么这个List将有两个这个元素 。
remove()方法移除一个元素 。如果Collection中存在这个元素并且被移除了 , 这个方法将返回true 。如果元素不存在 , 将返回false 。
2、检测一个Collection是否包含一个确定的元素
Collection接口提供contains()和containsAll()两个方法来检查一个Collection是否包含一个或多个元素 。
3、迭代一个Collection
Collection collection = new HashSet();//... add elements to the collectionIterator iterator = collection.iterator();while(iterator.hasNext()){Object object = iterator.next();//do something to object;}或者使用for循环
Collection collection = new HashSet();//... add elements to the collectionfor(Object object : collection) {//do something to object;}二、Iterator接口(迭代器)
Iterator主要遍历Collection集合中的元素 , 用于遍历单列集合 , 也有称为迭代器 。因为Collection中有iterator()方法 , 所以每一个子类集合对象都具备迭代器 。迭代是快速取出集合中元素的一种方式 。
子类集合中任意一个集合创建的对象可以使用iterator()方法获取一个Iterator对象 , 这个对象就是该集合的迭代器 。


推荐阅读