• JAVA学习第三十三课(经常使用对象API) —迭代器


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

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

    集合的由来

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

    集合的特点

    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接口的代码

  • 相关阅读:
    Jmeter 批量执行脚本之-----------Ant
    Linux之vi编辑器的使用
    Linux命令之-ps & kill
    Linux命令详解一:基础命令新建、删除、拷贝~~~
    Linux(Ubuntu)下安装jdk
    Lr-代理录制
    开通博客第一天
    找出列表中重复的元素及个数
    写一个密码校验程序,密码格式为含有大写、小写字母、数字,长度为8位
    创建数据,分页显示,输入要查看的页码,显示指定数据,每页显示10条数据
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4550836.html
Copyright © 2020-2023  润新知