迭代器学习(转)

迭代器(Iterator)

  迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。

  Java中的Iterator功能比较简单,并且只能单向移动:

  (1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。

  (2) 使用next()获得序列中的下一个元素。

  (3) 使用hasNext()检查序列中是否还有元素。

  (4) 使用remove()将迭代器新返回的元素删除。

  Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。

迭代器应用:
list l = new ArrayList();
l.add("aa");
l.add("bb");
l.add("cc");
for (Iterator iter = l.iterator(); iter.hasNext();) {
  String str = (String)iter.next();
  System.out.println(str);
}
/*迭代器用于while循环
Iterator iter = l.iterator();
while(iter.hasNext()){
  String str = (String) iter.next();
  System.out.println(str);
}
*/

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
转自: http://blog.csdn.net/luanlouis/article/details/41576373?utm_source=tuicoolutm_medium=referral   HashMap在Java开发中有着非常重要的角色地位,每一个Java程序员都应该了解HashMap。     本文主要从源码角度来解析HashMap的设计思路,并且详细地阐述HashMap中的几个概念,并深入探讨HashMap的内部结构和实现细节,讨论HashMap的性能问题,并且在文中贯穿着一些关于Hash

波浪文字 - 2016-09-25 14:09:08

最近写了一段波浪文字代码 /* dkplus专业搜集和编写实用电脑软件教程,搜集各种软件资源和计算机周边(java网络编程,seo网站优化,web开发,lnmp,java网络编程,毕业论文设计),独立制作视频和ppt和音频微信公众号,点击进入 dkplus官方博客http://dkplus.iteye.com 微信搜索dkplus关注公众号可获取海量计算机周边资源。 */ import java.awt.*;import java.applet.*;//Download by http://www.cod
一 自动类型转换 1 自动类型转换图   数范围小的向数范围大的进行自动类型转换,如同把小瓶的水倒入大瓶,不会有任何问题。Java支持自动类型转换。 2 代码示例 public class AutoConversion{public static void main(String[] args){int a = 6;// int可以自动转换为float类型float f = a;// 下面将输出6.0System.out.println(f);// 定义一个byte类型的整数变量byte b = 9;//
深刻理解IdentityHashMap: http://donald-draper.iteye.com/blog/2326264 方法说明: public staticK,V MapK,V unmodifiableMap(Map?extendsK,?extendsVm) 返回指定映射的不可修改视图。此方法允许模块为用户提供对内部映射的“只读”访问。 在返回的映射上执行的查询操作将“读完”指定的映射。试图修改返回的映射 (不管是直接修改还是通过其collection视图进行修改)将导致抛出Unsupporte

storm部署详细步骤 - 2016-09-24 19:09:04

1.修改主机名: vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=MASTER   2.修改IP: vim /etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO="static" HWADDR="00:0C:29:FC:62:B6" IPV6INIT="yes" NM_CONTROLLED="yes" ONBOOT="yes" TYPE="Ethernet" UUID="d0731a46-36df-4a
①前端接收enum时,将它放入一个容器script type="text/javascript"var App = {};App.module = 'merchantManage';App.mydata = {"data":[#{list items:memberStatus, as:'status'}{'title':'${status?.title}','name':'${status}'},#{/list}#{list items:memberOperationTypes, as:'target'}
多线程使用的主要目的在于: 1、吞吐量:你做WEB,容器帮你做了多线程,但是他只能帮你做请求层面的。简单的说,可能就是一个请求一个线程。或多个请求一个线程。如果是单线程,那同时只能处理一个用户的请求。 2、伸缩性:也就是说,你可以通过增加CPU核数来提升性能。如果是单线程,那程序执行到死也就利用了单核,肯定没办法通过增加CPU核数来提升性能。 鉴于你是做WEB的,第1点可能你几乎不涉及。那这里我就讲第二点吧。 --举个简单的例子: 假设有个请求,这个请求服务端的处理需要执行3个很缓慢的IO操作(比如数据库

博客搬家咯 - 2016-09-24 14:09:07

博客搬家了,最新地址: http://blog.uyiplus.com

关于java的10个谎言 - 2016-09-24 14:09:07

关于java的10个谎言 面试中总遇到各种奇葩的问题,小编在兄弟连网站上找到了下面的这些都算是比较高级的问题了,面试中一般也很少问到,因为它们可能会把面试者拒之门外。不过你可以自己找个时间来实践一下。 1. System.exit(0)会跳过finally块的执行 System.setSecurityManager(new SecurityManager() {         @Override         public void checkExit(int status) {            

Java 之浅复制和深复制 - 2016-09-24 14:09:07

1 浅复制和深复制区别 浅复制:浅复制只是复制本对象的原始数据类型,如int、float、String,对于数组和对象引用等是不会复制的。因此浅复制是有风险的。 深复制:不但对原始数据类型进行复制,对于对象中的数组和对象引用也做复制的行为,从而达到对对象的完全复制。 2 代码示例 package com;import java.util.ArrayList;public class Test implements Cloneable {// 私有属性private ArrayListString name