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

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

集合的由来:

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

集合的特点:

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. Mahout快速入门教程 分类: B10_计算机基础 2015-03-07 16:20 508人阅读 评论(0) 收藏

    Mahout 是一个很强大的数据挖掘工具,是一个分布式机器学习算法的集合,包括:被称为Taste的分布式协同过滤的实现.分类.聚类等.Mahout最大的优点就是基于hadoop实现,把很多以前运行于单 ...

  2. 《JavaScript &amp; jQuery交互式Web前端开发》之JavaScript基础指令

           在本节中.你将開始学习阅读和编写JavaScript代码,还将学习怎样编写Web浏览器可以遵照运行的指令.在開始学习后面章节中的更复杂的概念之前.我们先学习语言的一些核心部分,然后看看怎 ...

  3. 关于serialVersionUID的说明 分类: B1_JAVA 2014-05-24 11:02 1334人阅读 评论(0) 收藏

    1.为什么要使用serialVersionUID (1)对于实现了Serializable接口的类,可以将其序列化输出至磁盘文件中,同时会将其serialVersionUID输出到文件中. (2)然后 ...

  4. Html中CSS之去除li前面的小黑点,和ul、LI部分属性方法

    对于很多人用div来做网站时,总会用到,但在显示效果时前面总是会有一个小黑点,这个令很多人头痛,但又找不到要源,其它我们可以用以下方法来清除.1.在CSS中写入代码.找到相关性的CSS,在..li和. ...

  5. [GraphQL] Use GraphQLList with GraphQLObject Types

    When working with collections of things in GraphQL, we'll always reach out for the GraphQLListType. ...

  6. [Compose] 11. Use Task for Asynchronous Actions

    We refactor a standard node callback style workflow into a composed task-based workflow. For example ...

  7. css3-4 css3边框样式

    css3-4 css3边框样式 一.总结 一句话总结: 二.css3边框样式 1.相关知识 边框属性:1.border-width2.border-style3.border-color 边框方位:1 ...

  8. 设置好ftp后用xftp连接提示无法打开,无法显示远程文件夹

    原文:设置好ftp后用xftp连接提示无法打开,无法显示远程文件夹 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/the_victory/artic ...

  9. 360随身WIFI作USB无线网卡的做法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 1. 到控制面板上把360wifi卸载. 2. 到雷凌的官网下载网卡驱动,注意选择USB(RT2870***),操作系 ...

  10. 【b301】神经网络

    神经网络(NOIP2003第1题) Time Limit: 1 second Memory Limit: 50 MB [问题背景] 人工神经网络(Artificial Neural Network)是 ...