Collection-迭代方法

1、toArray()  返回Object类型数据,接收也需要Object对象! Object[] toArray();

  Collection c = new ArrayList();

  Object[] arr = c.toArray();

2、iterator()  Collection的方法,返回实现Iterator接口的对象,一般用Iterator接口类型数据接收,体现程序的多态性,是程序灵活的表现

迭代器的作用:就是用于抓取集合中的元素。

迭代器的方法:
            hasNext()   问是否有元素可遍历。如果有元素可以遍历,返回true,否则返回false 。
            next()         获取元素
            remove()    移除迭代器最后一次返回 的元素。

NoSuchElementException 没有元素的异常。
出现的原因: 没有元素可以被迭代(抓取)了

import java.util.*;
public class Demo1 {public static void main(String[] args) {Collection c = new ArrayList();Collection r = new ArrayList();c.add("李杰");c.add("李英");c.add("李汉斯");c.add("李汉三");c.add("狗蛋");Iterator b = c.iterator();Iterator h = r.iterator();//返回一个迭代器    //疑问:iterator()方法返回的是一个接口类型,为什么接口又可以调用方法可以使用呢?  //iterator 实际 上返回的是iterator接口的实现类对象。
        System.out.println(b.hasNext());System.out.println(h.hasNext());b.next();b.next();b.remove();  //删除迭代器最后一次返回的元素。/*while(b.hasNext()){ // hasNext() 问是否有元素可以遍历。System.out.println("元素:"+ b.next()); //获取元素}*//*清空集合 的元素while(b.hasNext()){b.next();b.remove();}*/System.out.println("集合的元素:"+ c);}
}

因为迭代器不会返回元素,所以remove();方法不会主动移除集合中数据,需要配合next()使用。及删除的是next()最后一次抓取的数据

遍历集合的方法
1、
Object[] arr = c.toArray(); // toArray()  把集合 的元素存储到一个 Object的数组中 返回。
for(int i = 0 ; i<arr.length ; i++){
 System.out.print(arr[i]+",");
}
2、使用hasNext()    next()组合方法便利

while(it.hasNext()){

    User user = (User) it.next();

    if(user.account==id&&user.password.equals(password)){

    isLogin = true;

     }

}

3、

使用get方法遍历集合的元素:
  for (int i = 0; i < list.size() ; i++) {
   System.out.print(list.get(i)+",");
  }

集合的体系:

 Collection 单列集合 的根接口

     List  如果是实现了List接口的集合类,该集合类具备的特点:有序,可重复

    Set   如果是实现了Set接口的集合类,该集合类具备的特点: 无序,不可重复

List接口

有序: 集合的有序不是指自然顺序,而是指添加进去的顺序与元素出来的顺序是一致的

List接口中特有的方法具备的特点: 操作的方法都存在索引值。 
只有List接口下面的集合类才具备索引值。其他接口下面的集合类都没有索引值。

List接口中特有方法:    

添加

    add(int index, E element)
    addAll(int index, Collection<? extends E> c)
获取:
    get(int index)
    indexOf(Object o)
    lastIndexOf(Object o)
    subList(int fromIndex, int toIndex)
修改:
    set(int index, E element)

迭代

    listIterator()

import java.util.*;public class Demo2 {public static void main(String[] args) {List list=  new ArrayList();list.add("李杰");list.add("李英");list.add("李汉三");  list.add("李汉斯");/*    //添加方法list.add(2, "李四"); List list2 = new ArrayList();list2.add("张三");list2.add("王二");list.addAll(2,list2);*//*//获取的方法 System.out.println(list.get(1)); //根据索引值获取集合中的元素使用get方法遍历集合的元素:for (int i = 0; i < list.size() ; i++) {//判断集合长度用size()System.out.print(list.get(i)+",");}System.out.println(list.indexOf("李杰"));//找出指定元素第一次出现在集合中 的索引值System.out.println(list.lastIndexOf("李汉斯"));//找指定的元素最后一次出现在集合中的索引值List subList = list.subList(1, 3); //指定开始与结束的索引值截取集合中的元素。System.out.println(subList)//返回值是一个List输出子集合的元素 */    list.set(3, "李白"); //使用指定的元素替换指定索引值位置的元素。
        System.out.println(list);//输出集合的元素,查看效果
    }
}

ListIterator接口特有的方法:
 
 添加:
    hasPrevious()  判断是否存在上一个元素
    previous()    当前指针先向上移动一个单位,然后再取出当前指针指向的元素
    next();  先取出当前指针指向的元素,然后指针向下移动一个单位
    add(E e)   把当前有元素插入到当前指针指向的位置上
    set(E e)   替换迭代器最后一次返回的元素

import java.util.*;public class Demo3 {public static void main(String[] args) {List list = new ArrayList();list.add("李杰");list.add("李英");list.add("李汉三");list.add("李汉斯");ListIterator it = list.listIterator(); //返回的是一个List接口中特有的迭代器/*System.out.println(it.hasPrevious())//判断是否有上一个元素,有true,没有false System.out.println(it.previous());//获取上一个元素it.next();System.out.println(it.previous());//获取上一个元素 while(it.hasNext()){it.next();}while(it.hasPrevious()){System.out.println("元素:"+ it.previous());}it.next();it.next();it.add("李白");*/it.next();it.next();it.set("李白");System.out.println("集合的元素:"+ list);        }
}

作业: 使用三种方式遍历集合的元素.  
  一、 使用get方法遍历。
  二、 使用迭代器正序遍历。
  三、 使用迭代器逆序遍历。

import java.util.*;
public class Demo4 {public static void main(String[] args) {List list = new ArrayList();list.add("李杰");list.add("李英");list.add("李汉三");for(int i = 0 ; i<list.size() ; i++){System.out.print(list.get(i)+",");}System.out.println();ListIterator it = list.listIterator();while(it.hasNext()){System.out.print(it.next()+",");}System.out.println();while(it.hasPrevious()){System.out.print(it.previous()+",");}    }
}

转载于:https://www.cnblogs.com/JYDesigner/p/9339538.html

Day 4:集合——迭代器与List接口相关推荐

  1. Java Collection集合 --迭代器 -- 泛型 --List接口案例

    案例1 需求:具体要求如下:学生练习 1.定义一个学生类Student,包含三个属性姓名.年龄.性别, 私有成员变量,生成无参,有参构造方法,生成get/set方法并重写toString()方法. 2 ...

  2. Java集合迭代器原理图解_Java Iterator接口遍历单列集合迭代器原理详解

    这篇文章主要介绍了Java Iterator接口遍历单列集合迭代器原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Iterator接口概述 ...

  3. Java集合框架之四大接口、常用实现类,java基础面试笔试题

    我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...

  4. -1-3 java集合框架基础 java集合体系结构 Collection 常用java集合框架 如何选择集合 迭代器 泛型 通配符概念 Properties 集合 迭代器...

    集合又称之为容器存储对象的一种方式 •数组虽然也可以存储对象,但长度是固定的:显然需要可变长度的容器 集合和数组的区别?                 A:长度区别                  ...

  5. java集合框架的接口_Java集合框架之Collection接口详解

    Java是一门面向对象的语言,那么我们写程序的时候最经常操作的便是对象了,为此,Java提供了一些专门用来处理对象的类库,这些类库的集合我们称之为集合框架.Java集合工具包位于Java.util包下 ...

  6. iterable java_java 集合框架(二)Iterable接口

    Iterable接口是java 集合框架的顶级接口,实现此接口使集合对象可以通过迭代器遍历自身元素,我们可以看下它的成员方法 修饰符和返回值 方法名 描述 Iterator iterator() 返回 ...

  7. 【Groovy】集合遍历 ( 使用集合的 reverseEach 方法进行遍历 | 倒序集合迭代器 ReverseListIterator 类简介 | 代码示例 )

    文章目录 一.使用集合的 reverseEach 方法进行倒序遍历 二.倒序集合迭代器 ReverseListIterator 类简介 三.代码示例 一.使用集合的 reverseEach 方法进行倒 ...

  8. 本案例通过ArrayList集合来显示Collection接口中的共性函数

    package JiHe.List; import java.util.ArrayList; /** Collection接口 * * 本案例通过ArrayList集合来显示Collection接口中 ...

  9. 5.0 java集合框架中的接口collection属于_JAVA集合框架 - osc_cyo2dovg的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.为什么要使用集合 单个数据,可以用变量保存: 多个数据,可以用数组保存: 但是对于存储多个数据且数量不确定的情况,使用集合: 二.集合和数组的区别 (1)数组: 1.只能保存同一种类型的数据: 2 ...

最新文章

  1. 计算机 程序 原理,计算机储存程序和程序原理是谁提出来的
  2. tensorflow tf.keras.layers tf.image 图像增强
  3. silverlight学习布局之:布局stackpanel
  4. 详解SOA五种基本架构模式
  5. Hypersonic SQL开源数据库方向比较流行的纯Java开发的关系型数据库
  6. 情人节的第一道小点心
  7. 【TCP传输数据-键盘录入】
  8. Oracle 数据库之最:你见过最高的 SQL Version 是多少?
  9. 项目运行报'vue-cli-service' 不是内部或外部命令,也不是可运行的程序 或批处理文件“
  10. mysql安装前的系统准备工作(转)
  11. 程序员在编程中遇到的奇葩弱智问题(转)
  12. java equals 字符串_Java String 字符串 比较 == equals
  13. ELK logstash中grok使用if判断消息是否包含某个字符串及以某个字符开头
  14. Java学习笔记(完结)
  15. 项目验收文档模板(三)
  16. 预加重——语音信号处理之一
  17. linux usb转串口驱动报错,USB转串口驱动编译出错
  18. Linux系统load average异常值处理的trick
  19. 原生js做一个简单的仿幻灯片放映
  20. 基于circom、snarkjs实现零知识证明不透漏具体地理位置的区域监控

热门文章

  1. mac你没有权限打开应用程序_如何管理Mac的隐私权限控制
  2. flask 检测post是否为空_使用Flask搭建一个校园论坛-4
  3. apache gobblin mysql_gobblin简单使用
  4. bio java 例子_JAVA BIO 服务器与客户端实现示例
  5. 协同过滤算法_机器学习 | 简介推荐场景中的协同过滤算法,以及SVD的使用
  6. java.util.scanner sc_关于Java的Scanner的问题,菜鸟求各大神解答
  7. 计算机图形学试题a卷,计算机图形学复习题及答案
  8. pymol怎么做底物口袋表面_怎么从文献中发掘一篇新文章?
  9. 【C++grammar】继承与构造test1代码附录
  10. C#Convert.ToInt32(bool)方法-将bool值转换为int