Day 4:集合——迭代器与List接口

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/389051.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oem是代工还是贴牌_代加工和贴牌加工的区别是什么

展开全部代加工就是替别人加工&#xff0c;贴别人的牌子。贴牌加工即商家自己不生产&#xff0c;而是委托其他生产企e68a8462616964757a686964616f31333365663431业生产&#xff0c;而品牌是自己的。拓展资料&#xff1a;OEM(Original Equipment Manufacture)的基本含义是定牌生…

KNN 算法--图像分类算法

KNN 算法–图像分类算法 找到最近的K个邻居&#xff0c;在前k个最近样本中选择最近的占比最高的类别作为预测类别。 给定测试对象&#xff0c;计算它与训练集中每个对象的距离。圈定距离最近的k个训练对象&#xff0c;作为测试对象的邻居。根据这k个紧邻对象所属的类别&#xf…

java核心技术-NIO

1、reactor&#xff08;反应器&#xff09;模式 使用单线程模拟多线程&#xff0c;提高资源利用率和程序的效率&#xff0c;增加系统吞吐量。下面例子比较形象的说明了什么是反应器模式&#xff1a; 一个老板经营一个饭店&#xff0c; 传统模式 - 来一个客人安排一个服务员招呼…

物种分布模型_减少物种分布建模中的空间自相关

物种分布模型Species distribution models (SDM; for review and definition see, e.g., Peterson et al., 2011) are a dominant paradigm to quantify the relationship between environmental dynamics and several manifestations of species biogeography. These statisti…

BZOJ1014: [JSOI2008]火星人prefix

BZOJ1014: [JSOI2008]火星人prefix Description 火星人最近研究了一种操作&#xff1a;求一个字串两个后缀的公共前缀。 比方说&#xff0c;有这样一个字符串&#xff1a;madamimadam&#xff0c;我们将这个字符串的各个字符予以标号&#xff1a; 序号&#xff1a; 1 2 3 4 5 6…

redis将散裂中某个值自增_这些Redis命令你都掌握了没?

本章主要内容字符串命令、列表命令和集合命令散列命令和有序集合命令发布命令与订阅命令其他命令本章将介绍一些没有在第1章和第2章出现过的Redis命令&#xff0c;学习这些命令有助于读者在已有示例的基础上构建更为复杂的程序&#xff0c;并学会如何更好地去解决自己遇到的问题…

asp.net的MessageBox

public class MessageBox{ public enum MsgButton { /// <summary> /// 只是OK按钮 /// </summary> OK 1, /// <summary> /// 提示是否确定 /// </summary> OKCancel 2 } publ…

深入理解激活函数

为什么需要非线性激活函数&#xff1f; 说起神经网络肯定会降到神经函数&#xff0c;看了很多资料&#xff0c;也许你对激活函数这个名词会感觉很困惑&#xff0c; 它为什么叫激活函数&#xff1f;它有什么作用呢&#xff1f; 看了很多书籍上的讲解说会让神经网络变成很丰富的…

如何一键部署项目、代码自动更新

为什么80%的码农都做不了架构师&#xff1f;>>> 摘要&#xff1a;my-deploy:由nodejs写的一个自动更新工具,理论支持所有语言(php、java、c#)的项目,支持所有git仓库(bitbucket、github等)。github效果如何?如果你的后端项目放在github、bitbucket等git仓库中管理…

Kettle7.1在window启动报错

实验环境&#xff1a; window10 x64 kettle7.1 pdi-ce-7.1.0.0-12.zip 错误现象&#xff1a; a java exception has occurred 问题解决&#xff1a; 运行调试工具 data-integration\SpoonDebug.bat //调试错误的&#xff0c;根据错误明确知道为何启动不了&#xff0c;Y--Y-…

opa847方波放大电路_电子管放大电路当中阴极电阻的作用和选择

胆机制作知识视频&#xff1a;6P14单端胆机用示波器方波测试输出波形详细步骤演示完整版自制胆机试听视频&#xff1a;胆机播放《猛士的士高》经典舞曲 熟悉的旋律震撼的效果首先看下面这一张300B电子管电路图&#xff1a;300B单端胆机原理图图纸里面画圆圈的电阻就是放大电路当…

键盘钩子

C#键盘钩子//*************************键盘钩子********************** //定义变量 public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam); static int hKeyboardHook 0; HookProc KeyboardHookProcedure; /************************* * 声明API函数 * ***…

matplotlib基础函数函数 plot, figure

matplotlib.pyplot.plot(*args, scalexTrue, scaleyTrue,dataNone,**kwargs) 用线段和标记去绘制x和y。调用签名&#xff1a; plot([x], y, [fmt], *, dataNone, **kwargs) plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)点或线的坐标由x, y给出 操作参数 fmt 是为了…

清洁数据ploy n_清洁屋数据

清洁数据ploy nAs a bootcamp project, I was asked to analyze data about the sale prices of houses in King County, Washington, in 2014 and 2015. The dataset is well known to students of data science because it lends itself to linear regression modeling. You …

redis安装redis集群

NoSql数据库之Redis1、什么是nosql&#xff0c;nosql的应用场景2、Nonsql数据库的类型a) Key-valueb) 文档型&#xff08;类似于json&#xff09;c) 列式存储d) 图式3、redis的相关概念kv型的。4、Redis的安装及部署5、Redis的使用方法及数据类型a) Redis启动及关闭b) Redis的数…

联想拯救者y7000p加内存条_内存、硬盘不够用?手把手教你升级联想拯救者Y7000P...

由于这两年内存价格的高企&#xff0c;主流笔记本的内存容量被锁定在 8GB 已经有了相当长的时间。作为近几个月最热门的游戏本产品&#xff0c;联想拯救者 Y7000P 除顶配之外同样使用的是 8GB 内存和 512GB 固态硬盘的配置。所以买到这款机器的玩家多数都会选择进行内存和硬盘的…

机器学习实践一 logistic regression regularize

Logistic regression 数据内容&#xff1a; 两个参数 x1 x2 y值 0 或 1 Potting def read_file(file):data pd.read_csv(file, names[exam1, exam2, admitted])data np.array(data)return datadef plot_data(X, y):plt.figure(figsize(6, 4), dpi150)X1 X[y 1, :]X2 X[…

ajax+webservice

版本为AJAX November CTP 三个示例分别为&#xff1a;1 带参数的WS方法2 不带参数的WS方法3 参数类型为DataTable的WS方法 一、WebMethod注意要点&#xff1a;1 WebMethod类需要添加命名空间 Microsoft.Web.Script.Services&#xff0c;此空间需要引用Microsoft.Web.Preview.dl…

深度学习数据扩张_适用于少量数据的深度学习结构

作者&#xff1a;Gorkem Polat编译&#xff1a;ronghuaiyang导读一些最常用的few shot learning的方案介绍及对比。传统的CNNs (AlexNet, VGG, GoogLeNet, ResNet, DenseNet…)在数据集中每个类样本数量较多的情况下表现良好。不幸的是&#xff0c;当你拥有一个小数据集时&…

时间管理

时间管理 时间管理是运用策略和技术&#xff0c;帮助你尽可能有效地利用你的时间。 不仅仅是要将时间用在正确的地方&#xff0c; 而且还要将尽可能有效地加以利用。 目前是如何利用时间的&#xff1a; 意识是时间管理的先决条件。目标提供路线图。选择是难点。 意识 第一条…