数字有非常多用数组存,对象有非常多就要用集合存

可是数组是固定长度的,集合是可变长度的

集合的由来:

对象用来封装特有数据,对象多了须要存储,假设对象个数不确定,就须要使用集合容器来存储

集合的特点:

1.用于存储对象的容器

2.长度可变

3.集合中不可存储基本数据类型

对于集合体系,的最顶层存储的是该体系中全部的共性内容,Collection,同继承一样,看顶层,用底层

java.uitil包中的Cellection



集合容器由于内部的数据不同,有多种详细容器,不断向上抽取,就形成了集合框架

整个框架的顶层就是Cellection接口

Cellection的常见方法(必须掌握):

1.加入
boolean add(Object e)//加入一个
boolean addAll(Collection e)//加入一堆
2.删除
boolean remove(Object e)//删除一个
boolean removeAll(Collection e)//删除一些
void clear();//所有删除
3.推断
boolean contains(object obj)//是否包括一个
boolean containsAll(Cellection e)
boolean isEmpty()//推断集合是否有元素
4.获取
int size()//返回此 collection 中的元素数。
Iterator <E> iterator()//迭代器取出集合中元素的方式
5.其它方法
boolean RetainAll(Collect e)//取交集
Object[] toArray()//将集合转成数组

方法演示:

import java.util.ArrayList;
import java.util.Collection; public class Main
{
public static void main(String[] args)
{
Collection e = new ArrayList();
Collection f = new ArrayList();
//show(e);
show(e,f);
}
public static void show(Collection e,Collection f)//演示xxxAll
{
e.add("a1"); e.add("a2");
e.add("a3"); e.add("a4");
f.add("a2"); f.add("a5");
f.add("a6"); f.add("a7");
//addAll
//e.addAll(f);
//System.out.println("e = "+e);
//removeAll
//e.removeAll(f);//删除e容器中全部和f同样的元素
//System.out.println("e = "+e);
//containsAll
//boolean flag = e.containsAll(f);
//System.out.println(flag);//e中是否包括f
//retainAll
System.out.println(e.retainAll(f));//和removeAll功能相反,保存同样,删除不同
System.out.println(e); }
public static void show(Collection e)//ctrl+shirt+o,导入包
{
//加入 。add
e.add("asd1");
e.add("asd2");
e.add("asd3");
System.out.println(e);
//删除
e.remove("asd2");//会改变长度
//e.clear();//清空 System.out.println(e);
}
}

迭代器的使用

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator; public class Main
{
public static void main(String[] args)
{
Collection e = new ArrayList();//随便new一个Collection的子类
e.add("a1"); e.add("a2"); e.add("a3"); e.add("a4");
System.out.println(e);
//调用Collection中的iterator()方法 -> 调用集合中的迭代器方法,是为了获取集合中的迭代器对象
/* Iterator it = e.iterator(); while(it.hasNext())//it.hasNext():假设仍有元素能够迭代,则返回 true。
{
System.out.println(it.next());//返回迭代的下一个元素。
it.remove();//删除:从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。
}*/
for(Iterator it = e.iterator();it.hasNext();)//写for循环,循环局部代码块一结束,it就删除了,开发用for:省内存
{
System.out.println(it.next());
}
System.out.println(e);
}
}

迭代器原理:

迭代器本身是内部类,迭代器要想訪问集合中的元素,就必须知道集合中元素的存放结构,所以迭代器仅仅有定义在内部才干获取集合中的内容,至于怎么取是容器自己实现的,由于存放方式是容器自身决定的

Iterator接口是终于的,全部容器公共的取出方式,仅仅要找到这个接口,就没有必要面对每个对象,仅仅要找到接口就能够实现对每个容器进行取出动作,也就符合接口的特点:减少了容器和取出方式的耦合性

我们仅仅须要使用公共的訪问方式就可以,至于内部怎么取,不须要知道,所以迭代器就不用new对象

总结:

Iterator it = e.iterator();//找到e容器的公共取出方法就可以

该对象(it)必须依赖于容器,才干进行元素的取出,由于每一个容器的数据结构不同,所以迭代器对象必须唉容器内部实现,对于使用容器者而言,详细实现不重要,仅仅要通过容器获取到该实现的迭代器的对象就可以

也就是iterator方法

Iterator接口是全部Collection容器进行元素取出的公共接口

具体看API中Iterator接口的代码

JAVA学习第三十三课(经常使用对象API) —迭代器的更多相关文章

  1. JAVA学习第三十课(经常使用对象API)- String类:类方法练习

    intern方法 public class Main { public static void main(String[] args) { String str1 = new String(" ...

  2. JAVA学习第六十三课 — 关于client服务端 &amp;&amp; URL类 &amp; URLConnection

    常见的client和服务端 client:       浏览器:IE:弹窗体,猎豹:弹窗体.多标签,争强效果 服务端:       server:TomCat:1.处理请求 2.给予应答 想让TomC ...

  3. “全栈2019”Java多线程第三十三章:await与signal/signalAll

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  4. NeHe OpenGL教程 第三十三课:TGA文件

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  5. 201671010140. 2016-2017-2 《Java程序设计》java学习第三周

    java学习第三周       不知不觉,学习java已经是第三周了,不同于初见时的无措,慌张,在接触一段时日后,渐渐熟悉了一些,了解到了它的便利之处,也体会到了它的一些难点,本周主攻第四章,< ...

  6. 风炫安全web安全学习第三十二节课 Python代码执行以及代码防御措施

    风炫安全web安全学习第三十二节课 Python代码执行以及代码防御措施 Python 语言可能发生的命令执行漏洞 内置危险函数 eval和exec函数 eval eval是一个python内置函数, ...

  7. JAVA学习第三十六课(经常使用对象API)— Set集合:HashSet集合演示

    随着Java学习的深入,感觉大一时搞了一年的ACM,简直是明智之举,Java里非常多数据结构.算法类的东西,理解起来就轻松多了 Set集合下有两大子类开发经常使用 HashSet集合 .TreeSet ...

  8. JAVA学习第二十九课(经常使用对象API)- String类

    多线程告一段落,開始经常使用对象API的涉及,背也要背下来!.! 日后开发,遇见最多的对象是文字,也就是字符串 String类 字符串是一个特殊对象 字符串一旦初始化就不能够被改变 一.特点 publ ...

  9. java学习(三)

    学号 20189214 <Java程序设计>第三周学习总结 教材学习内容总结 核心类 java.lang.Object 所有的类都直接派生自这个类. java.lang.String St ...

随机推荐

  1. VS2010下配置Opencv2.4.3 .

    VS2008下OpenCV的配置过程在OpenCV论坛上写的很详细,具体过程可以见如下链接http://www.opencv.org.cn/index.php/VC_2008_Express%E4%B ...

  2. [Yarn] Use Yarn to Create an Alternative Import Name of an Installed Library

    In this lesson we'll show how to use yarn to alias the names of same npm libraries but install diffe ...

  3. php实现调整数组顺序使奇数位于偶数前面

    php实现调整数组顺序使奇数位于偶数前面 一.总结 1.array_push()两个参数,$arr在前 2.array_merge()的返回值是数组   二.php实现调整数组顺序使奇数位于偶数前面 ...

  4. angular内置指令相关知识

    原文地址 https://www.jianshu.com/p/5a5b43a8e91f 大纲 1.angular指令的分类 2.angular指令之——组件 3.angular指令之——属性指令 (n ...

  5. xmpp即时通讯协议的特性---长处和缺点!

    xmpp协议的定义? XMPP是一种基于标准通用标记语言的子集XML的协议,它继承了在XML环境中灵活的发展性. 因此.基于XMPP的应用具有超强的可扩展性.经过扩展以后的XMPP能够通过发送扩展的信 ...

  6. jquery-11 jquery中的事件切换如何实现

    jquery-11 jquery中的事件切换如何实现 一.总结 一句话总结:事件切换hover()和toggle()函数.参数两个,都是函数,依次执行两个函数. 1.如何实现单击切换图片? 用togg ...

  7. 新版itunes添加铃声

    iTunes 铃声制作-图文教程 ① 点选设备iPhone - 勾选手动管理音乐和视频 - 点击应用 注意:因本操作涉及iPhone内音乐和视频,请操作前先对音乐和视频进行相关备份,以免同步后被刷掉造 ...

  8. 【t009】最大矩形面积

    Time Limit: 2 second Memory Limit: 32 MB [问题描述] 在x轴上水平放置着N个矩形,每个矩形都有相同的宽度,但是它们的高度并不相同. 比如,图1包含的矩形的高分 ...

  9. oracle员工表和部门表基本操作

    emp 员工表(empno 员工号/ename 员工姓名/job 工作/mgr 上级编号/hiredate 受雇日期/sal 薪金/comm 佣金/deptno 部门编号) dept 部门表(dept ...

  10. Android JNI编程(一)——JNI概念以及C语言Dev-C++开发环境搭建、编写HelloWorld

    版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/. 目录(?)[+] 一:JNI是什么呢? JNI:JNI是JavaNative Interfac ...