Java集合框架之Collection接口
Java是一门面向对象的语言,那么我们写程序的时候最经常操作的便是对象了,为此,Java提供了一些专门用来处理对象的类库,这些类库的集合我们称之为集合框架。Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。
Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些接口或实现类。
可以看到Collection并没有直接实现类,而是提供更具体的子接口实现。通过查询API,可以总结出Collection的基本功能。
1、添加
boolean add(E e):添加一个元素
boolean addAll(Collection<? extends E> c):添加一个集合的元素
示例代码
package collection; import java.util.ArrayList; import java.util.Collection; public class CollectionDemo1 { public static void main(String[] args) { Collection collection1 = new ArrayList(); // Collection是接口,实例化其子类 collection1.add("红楼梦"); collection1.add("三国演义"); System.out.println(collection1); Collection collection2 = new ArrayList(); collection2.add("西游记"); collection2.add("水浒传"); collection1.add(collection2); System.out.println(collection1); } }
输出结果:
[红楼梦, 三国演义] [红楼梦, 三国演义, [西游记, 水浒传]]
2、删除
void clear():清空集合中的所有元素
boolean remove(Object o):移除指定的元素
boolean removeAll(Collection<?> c):移除一个集合的元素
示例代码
package collection; import java.util.ArrayList; import java.util.Collection; public class CollectionDemo2 { public static void main(String[] args) { Collection collection1 = new ArrayList(); // Collection是接口,实例化其子类 collection1.add("红楼梦"); collection1.add("三国演义"); collection1.add("西游记"); collection1.add("水浒传"); System.out.println("初始状态:" + collection1); boolean b1 = collection1.remove("红楼梦"); System.out.println("是否移除了元素:" + b1); System.out.println("移除一个元素:" + collection1); System.out.println(); Collection collection2 = new ArrayList(); collection2.add("三国演义"); collection2.add("西游记"); collection2.add("平凡的世界"); boolean b2 = collection1.removeAll(collection2); // 移除两个集合的交集,只要有一个元素被移除了,就返回true System.out.println("移除一个集合:" + collection1); System.out.println("是否移除了元素:" + b2); System.out.println(); Collection collection3 = new ArrayList(); collection3.add("平凡的世界"); collection3.add("围城"); boolean b3 = collection1.removeAll(collection3);// 移除两个集合的交集,只要有一个元素被移除了,就返回true System.out.println("移除一个集合:" + collection1); System.out.println("是否移除了元素:" + b3); System.out.println(); collection1.clear(); System.out.println("清除集合中的所有元素:" + collection1); } }
输出结果
初始状态:[红楼梦, 三国演义, 西游记, 水浒传] 是否移除了元素:true 移除一个元素:[三国演义, 西游记, 水浒传] 移除一个集合:[水浒传] 是否移除了元素:true 移除一个集合:[水浒传] 是否移除了元素:false 清除集合中的所有元素:[]
3、判断
boolean contains(Object o):判断集合是否包含指定元素
boolean containsAll(Collection<?> c):判断集合是否包含指定的集合元素
boolean isEmpty():判断集合是否为空
示例代码
package collection; import java.util.ArrayList; import java.util.Collection; public class CollectionDemo3 { public static void main(String[] args) { Collection collection1 = new ArrayList(); // Collection是接口,实例化其子类 collection1.add("红楼梦"); collection1.add("三国演义"); collection1.add("西游记"); collection1.add("水浒传"); System.out.println("是否包含红楼梦:" + collection1.contains("红楼梦")); Collection collection2 = new ArrayList(); collection2.add("三国演义"); collection2.add("西游记"); collection2.add("平凡的世界"); System.out.println("是否包含一个集合中元素:" + collection1.containsAll(collection2)); // 包含所有才包含 System.out.println("集合是否为空:" + collection1.isEmpty()); } }
输出结果
是否包含红楼梦:true 是否包含一个集合中元素:false 集合是否为空:false
4、获取长度
int size():获取集合中元素的个数
示例代码
package collection; import java.util.ArrayList; import java.util.Collection; public class CollectionDemo4 { public static void main(String[] args) { Collection collection = new ArrayList(); // Collection是接口,实例化其子类 collection.add("红楼梦"); collection.add("三国演义"); collection.add("西游记"); collection.add("水浒传"); System.out.println("元素个数:" + collection.size()); } }
输出结果
元素个数:4
5、交集
boolean retainAll(Collection<?> c):保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。换句话说,移除此 collection 中未包含在指定 collection 中的所有元素。
示例代码
package collection; import java.util.ArrayList; import java.util.Collection; public class CollectionDemo5 { public static void main(String[] args) { Collection collection1 = new ArrayList(); // Collection是接口,实例化其子类 collection1.add("红楼梦"); collection1.add("三国演义"); collection1.add("西游记"); collection1.add("水浒传"); Collection collection2 = new ArrayList(); collection2.add("西游记"); collection2.add("水浒传"); System.out.println(collection1.retainAll(collection2)); System.out.println("collection1:" + collection1); System.out.println("collection2:" + collection2); Collection collection3 = new ArrayList(); collection3.add("西游记"); collection3.add("平凡的世界"); System.out.println(collection1.retainAll(collection3)); System.out.println("collection1: " + collection1); System.out.println("collection3: " + collection3); } }
输出结果
true collection1:[西游记, 水浒传] collection2:[西游记, 水浒传] true collection1: [西游记] collection3: [西游记, 平凡的世界]
从上面结果分析得知,collection1集合与collection2集合做交集运算,最后的结果保留在collection1中,而collection2中的元素保持不变。
6、集合转数组
Object[] toArray():集合转数组
示例代码
package collection; import java.util.ArrayList; import java.util.Collection; public class CollectionDemo6 { public static void main(String[] args) { Collection collection = new ArrayList(); // Collection是接口,实例化其子类 collection.add("红楼梦"); collection.add("三国演义"); collection.add("西游记"); collection.add("水浒传"); Object[] objects = collection.toArray(); for (Object object : objects) { System.out.println(object); } } }
输出结果
红楼梦 三国演义 西游记 水浒传
7、遍历
Iterator<E> iterator():返回在此 collection 的元素上进行迭代的迭代器,迭代器是集合特有的遍历方式,所以迭代器是依赖于集合存在的,其中Iterator是一个接口,其有3个方法
boolean hasNext():如果仍有元素可以迭代,则返回 true。
E next():返回迭代的下一个元素,并移动到下一个位置。
void remove():从迭代器指向的 collection 中移除迭代器返回的最后一个元素
示例代码
package collection; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class CollectionDemo7 { public static void main(String[] args) { Collection collection = new ArrayList(); // Collection是接口,实例化其子类 collection.add("红楼梦"); collection.add("三国演义"); collection.add("西游记"); collection.add("水浒传"); Iterator it = collection.iterator(); while (it.hasNext()) { Object object = it.next(); System.out.println(object); } it.remove(); // 如果未调用next方法,则会抛出IllegalStateException异常 System.out.println(collection); } }
输出结果
红楼梦 三国演义 西游记 水浒传 [红楼梦, 三国演义, 西游记]
我们可以把迭代器看成是一个指向集合的游标或者是指针,我们用黑色箭头表示迭代器,遍历集合之前的初始位置如下:
当代码执行it.hasNext()语句时,此时迭代器会判断后面是否还有元素,有的话,当代码it.next()执行时,则取出了当前迭代的元素红楼梦,同时迭代器向后移动了一个位置,
以此类推,当迭代器走到集合的最后位置时,语句it.hasNext()返回false,程序跳出循环,迭代结束。
至此,Collection接口的方法介绍完毕。下一篇介绍Collection的子接口List,Java集合框架之List接口。
Java集合框架之Collection接口的更多相关文章
- Java学习--java中的集合框架、Collection接口、list接口
与数组相比:1.数组的长度固定,而集合的长度可变2.数组只能通过下表访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象 java集合框架:collection(list序列,queue ...
- Java集合框架之四大接口、常用实现类
Java集合框架 <Java集合框架的四大接口> Collection:存储无序的.不唯一的数据:其下有List和Set两大接口. List:存储有序的.不唯一的数据: Set:存储无序的 ...
- Java集合框架之Map接口浅析
Java集合框架之Map接口浅析 一.Map接口综述: 1.1java.util.Map<k, v>简介 位于java.util包下的Map接口,是Java集合框架的重要成员,它是和Col ...
- Java集合框架之Set接口浅析
Java集合框架之Set接口浅析 一.java.util.Set接口综述: 这里只对Set接口做一简单综述,其具体实现类的分析,朋友们可关注我后续的博文 1.1Set接口简介 java.util.se ...
- Java集合框架之List接口浅析
Java集合框架之List接口浅析 一.List综述: 毫无疑问List接口位于java.util包下,继承自 Collection接口 存储元素的特点: 有序可重复(有序:即存进去是什么顺序,取出来 ...
- java 集合框架(二)Iterable接口
Iterable接口是java 集合框架的顶级接口,实现此接口使集合对象可以通过迭代器遍历自身元素,我们可以看下它的成员方法 修饰符和返回值 方法名 描述 Iterator<T> iter ...
- Java基础之集合框架(Collection接口和List接口)
首先我们说说集合有什么作用. 一.集合的作用 1.在类的内部,对数据进行组织: 2.简单而快速的搜索大数量的条目: 3.有的集合接口,提供一系列排列有序的元素,并且可以在序列中间快速的插入或者删除有关 ...
- Java集合框架中Map接口的使用
在我们常用的Java集合框架接口中,除了前面说过的Collection接口以及他的根接口List接口和Set接口的使用,Map接口也是一个经常使用的接口,和Collection接口不同,Map接口并不 ...
- Java集合框架中List接口的简单使用
Java集合框架可以简单的理解为一种放置对象的容器,和数学中的集合概念类似,Java中的集合可以存放一系列对象的引用,也可以看做是数组的提升,Java集合类是一种工具类,只有相同类型的对象引用才可以放 ...
随机推荐
- [原创]可动态显示圆形图像或圆形文字的AvatarImageView
项目地址: https://github.com/Carbs0126/AvatarImageView 前言: 在做电话本或者其他应用时,显示联系人头像的策略一般是这样的:先判断是否有头像图片,如果有, ...
- dll return a string
char g_szText[1024]; __declspec(dllexport) const char * __stdcall FuncName(const unsigned char *p) { ...
- Idea 201601注册码
参考链接 http://blog.csdn.net/u010310183/article/details/51162137 在license 下面输入 http://www.iteblog.com/i ...
- CSS 会被继承的属性
文本 color(颜色,a元素除外) direction(方向) font(字体) font-family(字体系列) font-size(字体大小) font-style(用于设置斜体) font- ...
- 二十五、【开源】EFW框架Winform前端开发之强大的自定义控件库
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...
- iOS开发之企业发布无线安装APP
前提是注册成为企业开发者(¥299),申请到证书并安装到本地,可以正常使用Xcode在IOS移动设备上进行Debug. 首先build看是否报错.如无错 执行下一: 执行Product—Archive ...
- 【PRML读书笔记-Chapter1-Introduction】1.2 Probability Theory
一个例子: 两个盒子: 一个红色:2个苹果,6个橘子; 一个蓝色:3个苹果,1个橘子; 如下图: 现在假设随机选取1个盒子,从中.取一个水果,观察它是属于哪一种水果之后,我们把它从原来的盒子中替换掉. ...
- sql server 2008 提示评估期已过的解决方法(升级无效)
提示窗口: 解决步骤: 第一步:进入SQL2008配置工具中的安装中心 第二步:再进入维护界面,选择版本升级 第三步:进入产品密钥,输入密钥 第四步:一直点下一步,直到升级完毕. SQL Server ...
- Core Animation 学习
core animation 是在UIKit层之下的一个图形库,用于在iOS 和 OS X 实现动画. Core Animation管理App内容 core animation不是一个完整的绘图系统, ...
- 在C函数中保存状态:registry、reference和upvalues
C函数可以通过堆栈来和Lua交换数据,但有时候C函数需要在函数体的作用域之外保存某些Lua数据,那么我们想到全局变量或static变量,这样做的缺点是:(1)为Lua设计C函数库时,导致不可重入:(2 ...