首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么Iterator的remove方法可保证从源集合中安全地删除对象,而在迭代期间不能直接删除集合内元素

Iterator 支持从源集合中安全地删除对象,只需在 Iterator 上调用remove()即可。...有些集合不允许在迭代时删除或添加元素,但是调用 Iterator 的remove() 方法是个安全的做法。 那么为什么用Iterator删除时是安全的的呢?...现在我们回到最初的问题,为什么用list直接删除元素迭代器会报错?...在他的remove函数中可以看到下面的一句话,首先其实还是调用了ArrayList的remove函数 ArrayList.this.remove(lastRet) 但是在调用完该函数后,他又进行了如下操作...所以这就解释了标题所提出的问题,还有值得注意的一点是对于add操作,则在整个迭代器迭代过程中是不允许的。 其他集合(Map/Set)使用迭代器迭代也是一样。

5.9K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Java入门提高篇】Day7 Java内部类——局部内部类

    局部内部类有以下特性: 局部内部类只能在代码代码块、方法体内和作用域中使用。 局部内部类同样可以无限制调用外部类的方法和属性。 可以使用abstract修饰,声明为抽象类。   ...通过这段玩具代码,可能无法理解为什么java中要出现这样限制这么多而且挺复杂的东西。...让我们来看看之前的栗子:Java中的回调   这里把代码复制过来: public class TimePrinter implements ActionListener { @Override...接口的对象,而这个对象仅仅在该方法中使用了一次,这时候内部类的优势就体现出来了,把类封装在方法中,不向外界提供任何冗余信息: public class Test { public static...我们都知道,java中是不能实现多继承的,接口也正是为了对多继承的补充完善给出的方案。

    616100

    高级Swing 组件

    但是,列表框中选择的集合始终都是固定的。那么我们应该如何在列表框中添加或者删除项目呢?让人有些奇怪的是,JList类中没有任何方法可以用来实现这些操作。相反,你必须进一步了解列表组件的内部设计情况。...然后,如果元素的集合发生了变化,它就可以得到通知,从而是它能够刷新列表。 这种通用性为什么非常有用呢?为什么JList对象只存储对象的一个向量呢? 请注意,该接口并没有设定如何进行对象的存储。...getElementAt方法可以在每个值被调用时随意对这些值进行从新计算。如果你想要显示非常大的一个集合而又不必存储这些值,那么这种方法可能是很有用的。...model.removeElement("dsaf"); model.addElement("dafds"); 正如你看到的样子,DefaultListModel类使用的方法名与集合类使用的名字是不同的...例如,调用下面这个方法,就可以将一个新节点作为选定的节点的最后一个子节点添加树,并且将添加的情况通知树视图。

    6910

    11 - JavaSE之GUI

    GUI 的各种元素(如:窗口,按钮, 文本框等)由 Java 类来实现。 使用 AWT 所涉及的类一般在 java.awt 包及其子包中。...Panel() // 使用默认的布局管理器初始化。 Panle(LayoutManager layout) // 使用指定的布局管理器初始化。 Panel 类拥有从其父继承来的一些常用成员方法。...在 Button 对象有 ActionEvent 事件对象产生的时候,自动调用 MyMonitor对象中实现 ActionListener 接口的函数actionPerformed 方法 示例: import...ActionListener 接口定义有方法: public void actionPerformed(ActionEvent e); 实现该接口的类要在该方法中添加处理该事件(Action)的语句。...事件时,会生成一个 ActionEvent 对象,该对象作为参数传递给 ActionListener 对象的 actionPerformed 方法 在方法中可以获取该对象的信息,并作出相应的处理。

    1.9K50

    Java进阶09 事件响应

    GUI的图形元素需要增加事件响应(event handling),才能得到一个动态的图形化界面。 ? 元素, 事件, 监听器 我们在GUI一文中提到了许多图形元素。...有一些事件(Event)可能发生在这些图形元素上,比如: 点击按钮 拖动滚动条 选择菜单 Java中的事件使用对象表示,比如ActionEvent。每个事件有作用的图形对象,比如按钮,滚动条,菜单。...我们将动作放在一个监听器(ActionListener)中,然后让监听器监视(某个图形对象)的事件。当事件发生时,监听器中的动作随之发生。 ?...这样做是为了让监听器能更方便的调用图形对象的成员,比如setBackground()方法。 ActionListener的actionPerformed()方法必须被覆盖。该方法包含了事件的对应动作。...该方法的参数为事件对象,即监听ActionEvent类型的事件。ActionEvent是一个高层的类,Java会找到图形对象(按钮)会发生的典型事件(点击)作为事件。

    1.2K80

    JAVA贪吃蛇小游戏源代码系列

    F盘的相应路径下,在运行程序的时候需要将图片类和音乐类保存到自己的本地磁盘路径中,然后在程序中改变路径。...* 程序启动的界面包括背景图片和进入运行界面的Button,点击按钮之后程序关闭启动界面进入到运行界面, * 运行界面设置在SnakeGame类中,Test类大体设置了运行界面的大小可见与否等。...java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import...* 主要实现原理是定义一个新界面的类,作为运行界面,然后定义一个关掉启动界面的方法,然后在监听器事件中, * 调用关掉界面的方法,实例化运行界面 */ @Override public void...* 同时可以获得蛇身上的x和y点坐标,和颜色 */ import java.awt.Color; public class SnakeNode { //定义蛇身集合中的各个元素点,x,y。

    60210

    java函数式接口(lambda表达式)

    Java8新特性 Java8的新特性主要是lambda表达式和流,它是推动 Java 8 发布的最重要新特性,允许把函数作为一个方法的参数(函数作为参数传递进方法中)使用 Lambda 表达式可以使代码变的更加简洁紧凑...:流是从支持数据处理操作的源生成的元素序列,源可以是数组、文件、集合、函数。...Java 程序员在使用集合类时,一个通用的模式是在集合上进行迭代,然后处理返回的每一个元素 List接口中的stream()函数 default Stream stream() { return...} 打印结果: 1232 435345 657868 stream.filter一般适用于list集合,从集合中查询想要的数据 list.stream().forEach(System.out::println...需要注意的是,虽然这是一个方法,但不需要在后面加括号,因为这里并不调用该方法。我们只是提供了和 Lambda 表达式等价的一种结构,在需要时才会调用。

    37310

    java课程设计(简易计算器)源代码 JAVA 源代码有解析 免费分享

    ③单击计算器上的函数按钮可以计算出相应的函数值。 ④单击计算器上的等号(=)按钮显示计算结果。 ⑤在一个文本框中显示当前的计算过程,在一个文本区中显示以往的计算过程。...⑥单击“保存”按钮可以将文本区中显示的全部计算过程保存到文件:单击“复制”按钮可以将文本区中选中的文本复制到剪贴板单击“清除”技钮可以清除文本区中的全部内容。 注意事项: 一....含有main方法。从该类开始执行。同样也负责(退格,=,归零,. ,+/-,sin)按钮创建。 SymbolButton.java 负责(+,-,*,/)四个运算符号按钮的创建。...OperateSin.java.java 负责用户点击(Sin)按钮时的事件处理。 三:涉及的知识点 12. 基本数据类型与数组。 13. 运算符,表达式和语句。 14. 类与对象。 15....内部类与异常类。 18. 常用String类。 19. 组件及事件处理。 20. 输入与输出流。 21. Linked List类的基本用法。

    3.2K40

    java arraylist遍历_java 遍历arrayList的四种方法

    通过添加和删除元素,就可以动态改变数组的长度。 工具/原料 Java 方法/步骤 1 一.优点 1。支持自动改变大小的功能 2。可以灵活的插入元素 3。...”); 结果为aaabcde 5 3.publicvirtualvoidInsertRange(intindex,ICollectionc); 将集合中的某个元素插入ArrayList的指定索引处 ArrayListaList...,intcount); 从ArrayList中移除一定范围的元素。...Count是ArrayList中实际包含的元素数。Capacity总是大于或等于Count。如果在添加元素时,Count超过Capacity,则该列表的容量会通过自动重新分配内部数组加倍。...如果不向列表中添加新元素,则此方法可用于最小化列表的内存系统开销。 若要完全清除列表中的所有元素,请在调用TrimToSize之前调用Clear方法。

    61320

    AWT常用组件

    TextField 类的构造方法有4种重载形式,通过给参数赋值,可以设置文本框中的初始文本字符,以及文本框的列数。TextField类的构造方法见表。...单选按钮组的实现(结合使用CheckboxGroup类) 单选按钮是一种输入信息的组件,拥有“状态”的特性,通过鼠标单击单选按钮的操作可以将其状态从“true” 更改为“false”,或从“false”...此后,调用成员方法 add(Sring item)添加选项 item;默认情况下,添加的第一个项将成为选定项。类 Choice的常用成员方法与选项的增、删、选等有关。...Choice类的常用成员方法 成员方法 描述 void add(String item) 将一个选项添加到 Choice 下拉列表中 String getltem(int index) 获取 Choice...它的构造方法有3种重载形式,通过参数赋值可以指定列表项数目,以及是否允许进行多项选择。无论哪种形式的构造方法,创建的都是空白列表。此后,调用成员方法add()添加选项。

    10010

    TextField和Graphics类

    与该事件对应的事件类是java.awt.event.ActionEvent 用来处理ActionEvent事件是实现了java.awt.event.ActionListener接口的类的对象,ActionListener...接口定义有方法: public void actionPerformed(ActionEvent e) 实现该接口的类要在该方法中添加处理该事件(Action)的语句 使用addActionListener...对象的actionPerformed方法在方法中可以获取该对象的信息,并做相应的处理 import java.awt.*; import java.awt.event.*; public class TFActionEvent...,我需要将TFFrame类中的tf相关信息传到TFActionListener中,这样才能使用tf对象的一些方法,比方说获取其文本框的内容,修改其文本框的内容等等,但是tf是另一个类的对象,并不是TFActionListener...类中的对象,如何获取呢?

    91120
    领券