一、集合概述
当我们在使用JAVA进行编程开发时 , 经常会遇到一些需要集中存放的多个数据 , 这时我们可以选择“数组”或者“集合” , 关于数组的知识可以参考上一篇文章 , 今天我们主要讲集合的使用 。
集合和数组既然都是容器 , 它们有什么区别呢?
1、数组长度固定 , 集合长度可变 。
数组是静态的 , 一个数组实例具有固定的大小 , 一旦创建了就无法改变容量了 , 而且生命周期也是不能改变的 , 还有数组也会做边界检查 , 如果发现有越界现象 , 会报RuntimeException异常错误 , 当然检查边界会以效率为代价 。而集合的长度是可变的 , 可以动态扩展容量 , 可以根据需要动态改变大小 。
2、数组中只能是同一类型的元素且可以存储基本数据类型和对象 。集合不能存放基本数据类型 , 只能存对象 , 类型可以不一致 。
3、集合以类的形式存在 , 具有封装、继承、多态等类的特性 , 通过简单的方法和属性即可实现各种复杂操作 , 大大提高了软件的开发效率
下面有一张集合家族图:
![Java基础之集合与泛型](http://img.jiangsulong.com/220420/2356261535-0.jpg)
文章插图
由上面的图片可以看出:Java的集合类主要由两个接口派生而出:Collection和Map , Collection和Map是Java集合框架的根接口 。
![Java基础之集合与泛型](http://img.jiangsulong.com/220420/2356263062-1.jpg)
文章插图
![Java基础之集合与泛型](http://img.jiangsulong.com/220420/23562A015-2.jpg)
文章插图
下面我们一步一步来介绍集合家族的成员 。
二、Collection接口
Collection 接口是Set,List,Queue接口的父接口 , 该接口定义的方法可以也可用于操作子接口集合 , 具体方法见下图
![Java基础之集合与泛型](http://img.jiangsulong.com/220420/23562B120-3.jpg)
文章插图
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对象 , 这个对象就是该集合的迭代器 。
推荐阅读
- 辛弃疾鹧鸪天送廓之
- docker 快速搭建JAVA开发环境
- java中的常量折叠
- Flask框架学习之环境配置
- Java案例实战:Httpclient 实现网络请求 + Jsoup 解析网页
- 韩信关于他与刘邦之间不同点的描述
- 官渡之战中谁离开袁绍改投曹操使得曹操扭转战局
- 揭开男人心中隐藏的非分之想
- 盘点男女间10大暧昧隐情
- 长平之战以后为什么没有直接灭赵 历史记载长平之战白起坑杀赵国战败降卒数量是四十万吗