Java Iterator, ListIterator 和 foreach语句使用
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语句使用的更多相关文章
- 【Java学习笔记】foreach语句(高级for)
package p2; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java ...
- Java Iterator ListIterator 理解
一. Iterator 常用操作 next hasNext remove 先上源码:JDK8 简化版本,用于说明问题 private class Itr implements Iterator< ...
- java:集合输出Iterator,ListIterator,foreach,Enumeration
//集合输出,集合的四种输出 Iterator, ListIterator, foreach, Enumeration 只要碰到集合,第一输出选择是Iterator类. Iterator<E&g ...
- JAVA中ListIterator和Iterator详解与辨析
在使用Java集 合的时候,都需要使用Iterator.但是java集合中还有一个迭代器ListIterator,在使用List.ArrayList. LinkedList和Vector的时候可以使用 ...
- Java中的可变参数以及foreach语句
Java中的可变参数的定义格式如下: 返回值类型 方法名称(类型 ... 参数名称){} foreach语句的格式如下: for ( 数据类型 变量名称 :数据名称){ ... } public ...
- Java之Foreach语句
Foreach是for语句的特殊简化版本,但任何时候的foreach语句都可以改写成for语句.Foreach语句在遍历数组等方面为程序员提供了很大的方便 语法如下: For(元素变量 x:遍历对象o ...
- Java使用foreach语句对数组成员遍历输出
/** * 本程序使用foreach语句对数组成员进行遍历输出 * @author Lei * @version 2018-7-23 */ public class ForeachDemo { pub ...
- 可迭代的集合类型使用foreach语句
在学习算法这本书图论那一部分的时候,接触到了几个类似for(int w:G.adj(v)),的语句,不是很理解,就去百度,发现这是一种叫做foreach的语法,在书的76页有讲到,但是之前没认真看书, ...
- 浅析foreach语句
本篇是我对于foreach语句(增强for)的总结: 我的总结流程如下: 1.先整体说明增强for遍历集合与数组之间的区别. 2.通过一维数组来说明(给出反编译的源码,形成对照). 3.通过二维数组来 ...
随机推荐
- js中使用进行字符串传参
在js中拼接html标签传参时,如果方法参数是字符串需要加上引号,这里需要进行字符转义 <a href='javascript:addMenuUI("+"\"&qu ...
- jQuery 中对 CommonJs 的支持处理
jQuery 中对 CommonJs提供了直接支持,可以在 CommonJs模块中直接引用 jQuery 对象,这是如何实现的呢? 从 factory 函数说起 说先看 jQuery 的主体函数定义, ...
- extentreports报告插件与testng集成(二)
之前的一篇文章中,是把extentreports 的报告的初始方法写在driver的初始方法中,写报告的方法在testng的 onTest中,这次将这些方法全都拆出来,写在一个方法类中,这个类重现实现 ...
- c#与js中10进制16进制的转化,记录防忘
js: var param="11"; param=parseInt(param,16); //17 param=parseInt(param,10); //11 //后面的参 ...
- 简单的java socket 示例
一.搭建服务器端 a).创建ServerSocket对象绑定监听端口. b).通过accept()方法监听客户端的请求. c).建立连接后,通过输入输出流读取客户端发送的请求信息. d).通过输出流向 ...
- 关于oracle中创建新表时将我们要用的表的结构和数据都复制过去
今天在oracle中遇到了一个问题,就是给我查询出来了一张表的数据,只有部分的字段,让我将这张表的结构和数据放到新的临时表中,并进行数据的查询. 我是这样做的: 如:create table tabl ...
- JavaScript笔记:对象及数组
一.对象 在javascript中,对象是拥有属性和方法的一种基本数据类型 1.创建object 创建object实例有如下两种方式: 使用new操作符后跟object构造函数创建,如下代码: var ...
- SQL Server复制情况下的高可用方案(一)镜像+复制
数据库镜像可以与事务复制一起使用实现数据库整体的高可用性和高性能,其中镜像可以提供故障检测和故障转移,复制则用于实现读写分离. 数据库镜像涉及一个数据库的两个副本,这两个副本通常驻留在不同的计算机上. ...
- Jquery day02
jquery day01回顾 语法: $("选择器") , $(dom对象) , $("<div>") 选择器: 基本:#id.ele ...
- mongodb ubuntu下自启动
个人测试开发的时经常会采用shell 启动mongodb,当进入项目团队开发测试时,必须让mongodb可以随系统自启动. 1.编写启动命令 sudo vim /etc/rc/local 1-1 mo ...