黑马程序员-Java基础,Java集合Collection和Iterator接口
ASP.Net+Android+IOS开发、.Net培训、期待与您交流!
Collection和Iterator接口是List、Set和Queue接口的父接口,该接口里定义的方法即可用于操作Set集合,也可用于操作List和Queue集合:
1.boolean add(Object o):该方法用于向集合里添加一个元素,如果集合对象被添加操作改变了,则返回true。
2.Boolean addAll(Collection c):该方法把指定集合c里的元素全部添加到指定集合里,如果集合对象被添加操作改变了,则返回true。
3.Void clear():清除集合里的所有元素,将集合长度变为零。
4.Boolean contains(Object o):如果包含指定元素,返回true。
5.Boolean containsAll(Collection c):如果包含集合c里的所有元素,返回true。
6.Int size():该方法返回元素的个数。
7.Boolean isEmpty():如果不含任何元素,返回true
8.Iterator iterator():返回一个Iterator对象,用于遍历集合里的元素。
9.Object[] toArray():返回一个存贮这个集合中元素的数组Object[]
10.Boolean remove(Object o):删除一个数据,成功返回true
11.Boolean removeAll(Collection c):删除包含在集合c里的所有元素,如果集合有改变,返回true
12.Boolean retainAll(Collection c):删除不包含在集合c里的所有元素,如果集合有改变,返回true。
下面程序示范了通过上面方法来操作Collection集合。
程序代码:
1 package com.king.testcollection; 2 3 4 5 import java.util.ArrayList; 6 7 import java.util.Collection; 8 9 import java.util.HashSet; 10 11 import java.util.Iterator; 12 13 14 15 public class TestCollection { 16 17 18 19 /** 20 21 * @author 王者黑桃 22 23 */ 24 25 public static void main(String[] args) { 26 27 Collection c=new ArrayList(); 28 29 //添加元素 30 31 c.add("孙悟空"); 32 33 //虽然集合里不能放基本类型的数值,但Java支持自动装箱 34 35 c.add(6); 36 37 //以下将看到输出结果为:2 38 39 System.out.println("c集合当前的元素个数为:"+c.size()); 40 41 //删除指定元素 42 43 c.remove(6); 44 45 //以下将看到输出结果为:1 46 47 System.out.println("c集合当前的元素个数为:"+c.size()); 48 49 //判断是否包含指定字符串,将看到输出结果为:true 50 51 System.out.println("c集合中是否包含孙悟空字符串:"+c.contains("孙悟空")); 52 53 //添加元素 54 55 c.add("猪八戒"); 56 57 //以下将看到输出结果为:[孙悟空, 猪八戒] 58 59 System.out.println("c集合当前的元素:"+c); 60 61 Collection names=new HashSet(); 62 63 names.add("猪八戒"); 64 65 names.add("沙和尚"); 66 67 //将看到输出结果为:false 68 69 System.out.println("c集合是否完全包含names集合?"+c.containsAll(names)); 70 71 //用c集合减去names集合里的所有元素 72 73 c.removeAll(names); 74 75 //将看到输出结果为:[孙悟空] 76 77 System.out.println("c集合当前的元素:"+c); 78 79 //删除c集合里所有元素 80 81 c.clear(); 82 83 //将看到输出结果为:[] 84 85 System.out.println("c集合当前的元素:"+c); 86 87 //names集合里只剩下c集合里也同时包含的元素 88 89 names.retainAll(c); 90 91 //将看到输出结果为:[] 92 93 System.out.println("names集合当前的元素:"+names); 94 95 96 97 } 98 99 100 101 }
上面程序创建了两个Collection对象,一个c集合,一个names集合。其中c集合为ArrayList,而names集合为HashSet,虽然他们使用的实例类型不同,当把他们当成Collection使用时,使用add,remove,clear等方法来操作集合元素时没有任何区别。
当时用System.out的println方法输出集合对象时,将输出[ele1,ele2,...]的形式,这显然是因为Collection的所有集合实现类重写了toString()方法,该方法可一次性输出集合中的所有元素。
使用Iterator接口遍历集合元素:
Iterator接口是JAVA集合框架的成员,但它与Collection系列、Map系列的集合不一样:这两者主要用于盛装其他对象,而Iterator则用于遍历(即迭代访问)Collection集合中的元素。Iterator对象也被称为迭代器。
Iterator接口隐藏了各种Collection实现类的底层细节,向应用程序提供了遍历Collection集合元素的同一编程接口,Iterator接口定义了如下三个方法:
1.boolean hasNext():如果被迭代的集合元素还没有被遍历,则返回true。
2.Object next():返回集合里下一个元素。
3.Void remove():删除集合里上一次next方法返回的元素。
通过Iterator来遍历集合元素的程序代码:
1 package com.king.testcollection; 2 3 4 5 import java.util.ArrayList; 6 7 import java.util.Collection; 8 9 import java.util.HashSet; 10 11 import java.util.Iterator; 12 13 14 15 public class TestCollection { 16 17 18 19 /** 20 21 * @author 王者黑桃 22 23 */ 24 25 public static void main(String[] args) { 26 27 //创建一个集合 28 29 Collection names=new HashSet(); 30 31 names.add("猪八戒"); 32 33 names.add("沙和尚"); 34 35 names.add("孙悟空"); 36 37 //获取names集合对应的迭代器 38 39 Iterator it=names.iterator(); 40 41 while(it.hasNext()){ 42 43 //it.next()方法返回的数据类型是Object类型,需要强制类型转换 44 45 String name=(String)it.next(); 46 47 System.out.println(name); 48 49 if(name.equals("沙和尚")){ 50 51 //从集合中删除上次next方法返回的的元素 52 53 it.remove(); 54 55 } 56 57 //对name变量赋值,不会改变集合元素本身 58 59 name="测试字符串"; 60 61 } 62 63 System.out.println(names); 64 65 } 66 67 68 69 }
从上面程序可以看出,Iterator仅用于遍历集合,Iterator本身并不提供盛装对象的能力。如果需要创建Iterator对象,则必须有一个迭代的集合。
使用foreach遍历集合元素:
程序代码:
1 package com.king.testforeach; 2 3 4 5 import java.util.Collection; 6 7 import java.util.HashSet; 8 9 10 11 public class TestForeach { 12 13 14 15 /** 16 17 * @author 王者黑桃 18 19 */ 20 21 public static void main(String[] args) { 22 23 // 创建一个集合 24 25 Collection names=new HashSet(); 26 27 names.add(new String("孙悟空")); 28 29 names.add(new String("猪八戒")); 30 31 names.add(new String("沙和尚")); 32 33 for(Object obj:names){ 34 35 //此处的name变量也不是集合元素本身 36 37 String name=(String)obj; 38 39 System.out.println(name); 40 41 if(name.equals("猪八戒")){ 42 43 //下面代码将会引发ConcurrentModificationException异常 44 45 //names.remove(name); 46 47 } 48 49 } 50 51 System.out.println(names); 52 53 54 55 } 56 57 58 59 }
ASP.Net+Android+IOS开发、.Net培训、期待与您交流!
详细请查看:http://edu.csdn.net
转载于:https://www.cnblogs.com/super614508584/p/3505965.html
黑马程序员-Java基础,Java集合Collection和Iterator接口相关推荐
- 黑马程序员----0704期java基础班心得
------<a target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 黑马程 ...
- 黑马程序员 python 基础版 哪个老师_(看黑马程序员Python基础班视频挺好,犹豫该不该报班?)...
看黑马程序员Python基础班视频挺好,犹豫该不该报班? 如果看视频比较好的话,还是建议自学吧,毕竟录制视频的老师不一定参与实质的讲课,且能自学也省一笔培训费用了.我是看的bilibili上黑马程序员 ...
- 黑马程序员_基础测试
-------android培训.java培训.期待与您交流! ---------- 黑马程序员训练营基础测试题及个人代码(包含思路.步骤和基本注释) 1. 编写程序计算12+22+32+....+1 ...
- 黑马程序员-iOS基础-Objective-C基础(六)内存管理
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 黑马程序员-iOS基础-Objective-C基础(六)内存管理 一.内存管理的必要性 移动设备 ...
- 黑马程序员-黑马程序员训练营基础测试
---------------------- ASP.Net+Unity开发. .Net培训.期待与您交流! ---------------------- 为了帮助更多的人了解黑马,让更多想知道黑马测 ...
- 黑马程序员 一、java 概述与基础知识
获取更多资源关注Java帮帮IT资源分享网 一.黑马程序员-java 概述与基础知识 1.何为编程? 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果 的过程. 为了使 ...
- 黑马程序员 C++ 基础语法入门 学习记录
基础语法入门 文章目录 一.初识C++ 1.1 新建项目 1.2 编写项目 1.3 运行程序 1.4 注释 1.5 变量 1.6 常量 1.7 关键字 1.8 标识符命名规则 二.数据类型 2.1 整 ...
- 黑马程序员——JavaScript基础1(初识 JavaScript)
文章目录 一.初识 JavaScript 1.1 JavaScript 是什么 1.2 JavaScript 的作用 1.3 HTML/CSS/JS 的关系 1.4 浏览器执行 JS 简介 1.5 J ...
- 黑马程序员_java基础笔记(06)...集合
---------- ASP.Net+Android+IOS开发..Net培训.期待与您交流! ---------- JavaApi(其实就是java给我们提供的已经定义好的对象.工具对象:集合框架) ...
- 黑马程序员___Java基础[02-Java基础语法](一)
Java语言基础组成 一.关键字 1)定义:被Java语言赋予了特殊含义的单词 2)特点:关键字中所有字母均为小写 3)作用及分类: 下面是Java语言保留专用的50个关键字: 用于定义数据类型的关键 ...
最新文章
- 西北AI现在什么水平?有人3年即实现盈利,如今估值7亿!西工大系CEO:现实没那么高大上...
- python3.5安装教程-linux下安装python3.5.3的方式
- ElementNotVisible exception in Selenium WebDriver
- golang 数组、指针数组、数组指针使用总结
- 百度SEO进云jys系统应用开发框架
- 工作流任务的消息处理
- 再生核希尔伯特空间和核方法
- 手写键盘计算机,鼠标手写输入法计算机版本v2017最新版本
- 如何用c语言读文件,如何用C语言读写文件
- android之仿朋友圈程序,Android仿微信朋友圈添加图片的实例代码
- 论文翻译:2020_Improving Perceptual Quality By Phone-Fortified Perceptual Loss For Speech Enhancement...
- 【CircuitPython】RaspberryPi Pico RP2040 自定义机械键盘实例
- 【原创】《华杉讲透《孙子兵法》》阅读有感(二)
- 样式集(14)填写信息弹窗
- Python数据分析——世界自杀概况分析
- 尚驰SHANGCHI洗车店兰州汽车美容店私人定制洗车服务 杜绝难看的洗车纹!
- linux网卡掉包或挂掉解决办法
- python pca降维图_热力图和PCA降维图
- 把深山红叶装进U盘的方法[转载]
- 【keras】python mnist_mlp.py下载数据集mnist.npz失败的解决