Java Iterator, ListIterator 和 foreach语句使用

foreach语句结构: 
for(part1:part2){part3}; 
part2 中是一个数组对象,或者是带有泛性的集合. 
part1 定义了一个局部变量,这个局部变量的类型与part2中的对象元素的类型是一致的. 
part3 当然还是循环体.

foreach语句是java5的新特征之一,在遍历数组、集合方面,foreach为开发人员提供了极大的方便。 foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而,任何的foreach语句都可以改写为for语句版本。 foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为“foreach”语句。从英文字面意思理解foreach也就是“for 每一个”的意思。实际上也就是这个意思。

package com.twzheng;

import java.util.Iterator;
import java.util.ListIterator;
import java.util.LinkedList;
import java.util.Scanner; public class MainClass { private static Scanner scanner;
private static String enterString; /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
scanner = new Scanner(System.in); LinkedList<String> myLinkedList = new LinkedList<String>(); printList(myLinkedList); initialLinkedList(myLinkedList); System.out.println("findMember -> Please enter member value: ");
enterString = scanner.next(); if(findMember(myLinkedList, enterString)){
System.out.println(enterString + " is in the linkedList.");
}else{
System.out.println(enterString + " is not found in the linkedList.");
} printList(myLinkedList);
}

  // Java Iterator 使用
private static void printList(LinkedList<String> linkedList){
System.out.println("======================================"); Iterator<String> itr = linkedList.iterator();
// Iterator .hasNext()判断是否还有下一个
if (itr.hasNext()){
System.out.println("Pint linkedList members:");
}else{
System.out.println("The linkedList is empty!");
} int i = 0; while(itr.hasNext()){
       // Iterator .next()取得下一个
System.out.println(" <" + i + ">" + itr.next());
i++;
} System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
}

  // Java foreach语句使用
private static boolean findMember(LinkedList<String> linkedList, String lValue){
for(String checkedValue: linkedList){
if(checkedValue.equals(lValue)){
System.out.println("Found " + lValue + " at linkedList<" + linkedList.indexOf(checkedValue) + ">.");
return true;
}
}
return false;
}

  // Java ListIterator 使用 .next() .previous() .add()
private static boolean addMember(LinkedList<String> linkedList, String lValue){
ListIterator<String> ltr = linkedList.listIterator(); while(ltr.hasNext()){
int comp = ltr.next().compareTo(lValue); if(comp == 0){
// equal, do not add
System.out.println(lValue + " is already inclued in the linkedList.");
return false;
} else if(comp > 0){
// new member
ltr.previous();
ltr.add(lValue);
System.out.println(lValue + " has been added in the linkedList.");
return true;
} else {
// ???
}
} ltr.add(lValue);
return true;
} private static void initialLinkedList(LinkedList<String> linkedList){ System.out.println("Initialize linkedList:"); int choseNumber;
boolean stopEnter = false; try {
do {
System.out.println(" 0 - stop enter ");
System.out.println(" 1 - enter a new member ");
System.out.println("Please chose number: ");
choseNumber = scanner.nextInt(); switch (choseNumber) {
case 0:
stopEnter = true;
break;
case 1:
System.out.println("Please enter new member value: ");
addMember(linkedList, scanner.next());
break;
default:
System.out.println("Enter error!");
break;
}
} while (!stopEnter);
} catch (Exception e) {
// TODO: handle exception
System.out.println("Enter error!");
}
} }

Java Iterator, ListIterator 和 foreach语句使用的更多相关文章

  1. 【Java学习笔记】foreach语句(高级for)

    package p2; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java ...

  2. Java Iterator ListIterator 理解

    一. Iterator 常用操作 next hasNext remove 先上源码:JDK8 简化版本,用于说明问题 private class Itr implements Iterator< ...

  3. java:集合输出Iterator,ListIterator,foreach,Enumeration

    //集合输出,集合的四种输出 Iterator, ListIterator, foreach, Enumeration 只要碰到集合,第一输出选择是Iterator类. Iterator<E&g ...

  4. JAVA中ListIterator和Iterator详解与辨析

    在使用Java集 合的时候,都需要使用Iterator.但是java集合中还有一个迭代器ListIterator,在使用List.ArrayList. LinkedList和Vector的时候可以使用 ...

  5. Java中的可变参数以及foreach语句

    Java中的可变参数的定义格式如下: 返回值类型  方法名称(类型 ... 参数名称){} foreach语句的格式如下: for ( 数据类型  变量名称 :数据名称){ ... } public ...

  6. Java之Foreach语句

    Foreach是for语句的特殊简化版本,但任何时候的foreach语句都可以改写成for语句.Foreach语句在遍历数组等方面为程序员提供了很大的方便 语法如下: For(元素变量 x:遍历对象o ...

  7. Java使用foreach语句对数组成员遍历输出

    /** * 本程序使用foreach语句对数组成员进行遍历输出 * @author Lei * @version 2018-7-23 */ public class ForeachDemo { pub ...

  8. 可迭代的集合类型使用foreach语句

    在学习算法这本书图论那一部分的时候,接触到了几个类似for(int w:G.adj(v)),的语句,不是很理解,就去百度,发现这是一种叫做foreach的语法,在书的76页有讲到,但是之前没认真看书, ...

  9. 浅析foreach语句

    本篇是我对于foreach语句(增强for)的总结: 我的总结流程如下: 1.先整体说明增强for遍历集合与数组之间的区别. 2.通过一维数组来说明(给出反编译的源码,形成对照). 3.通过二维数组来 ...

随机推荐

  1. android 自定义View onMeasure中 super.onMeasure 和 setMeasuredDimension

    练习写一个自定义的view,代码是抄网上的,第一次写,没有问题,与网上的示例一样的效果, 第二次.第三次,都出现问题,但是解决了. 昨天进行第四次写再写,又出问题不一样的问题了. 首先是想加一个子包, ...

  2. 模拟下载的进度条ProgressBar

    作者:堕落的天使 图片效果 activity_main.xml(代码) <RelativeLayout xmlns:android="http://schemas.android.co ...

  3. html 学习资料列表

    HTML 教程 HTML 简介 html div 标签介绍 html span 标签介绍 html a 超链接标签 HTML Br换行标签介绍 HTML P段落标签介绍 HTML br与p标签区别 H ...

  4. 两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz

    1.Java Timer定时 首先继承java.util.TimerTask类实现run方法 import java.util.TimerTask; public class EmailReportT ...

  5. Mware vCenter Server 识别固态硬盘为(非SSD)是什么原因?

    人工定义一下: 用root登录进ESXi控制台:esxcli storage nmp device list #列出储存清单esxcli storage nmp satp rule add -s VM ...

  6. IntelliJ IDEA - 注释模板

    IntelliJ IDEA 注释模板自定义的方式有许多,如Live Templates和File and Code Templates,我比较喜欢File and Code Templates,在新建 ...

  7. 安装完Pydev却无法创建Python工程

    为了方便以后工作,今天在ADT里面安装了Pydev(http://pydev.org/updates),可是安装完之后,新建项目的时候却找不到Pydev,perference中也没有. 紧接着尝试安装 ...

  8. AX7: Get started developing

    This blog will show how you can start making a customization in AX 7 by showing you the steps needed ...

  9. ES6与ES5差别

    1.ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. { var a = 1; let b = 1; } a; b;/ let不像var ...

  10. Word设置首页不同

    Sub 批量格式设置()  '此代码为指定文件夹中所有选取的WORD文件的进行格式设置 Dim MyDialog As FileDialog, vrtSelectedItem As Variant, ...