`

java-增强for循环示例

 
阅读更多
package cd.itcast.day1;

import java.util.ArrayList;

/**
 * 增强for循环 for..in 关注于数组/集合里面的元素
 * 
 * for(类型 变量名 : 数组/集合){ 变量名... } 增强for循环和普通循环的区别
 * 
 * @author Administrator
 * 
 */
public class AdvForeach{

	public static void main(String[] args) {
		String s= null;
		OrderItem item1 = new OrderItem(1l, 20d, 10);
		OrderItem item2 = new OrderItem(2l, 30d, 10);
//		Double total = count(.8, new OrderItem[] { item1, item2, item3 });
//		System.out.println(total);

		List orderItems = new ArrayList();
		orderItems.add(item1);
		orderItems.add(item2);
//		orderItems.add(item3);
		
		List newOrderItems=filter(30d,orderItems);
		System.out.println(newOrderItems);
		
//		total = count(.8, orderItems);
//		System.out.println(total);
//		
//		String ret = StringUtils.join(",", "1", "2", "3");
//		System.out.println(ret);
	}

	/**
	 * 在数组里面使用for..in 对于数组来说,其实仍然采用的是下标+对象
	 * 
	 * @param cutoff
	 * @param items
	 * @return
	 */
	private static Double count(Double cutoff, OrderItem... items) {
		Double total = 0d;
		for (OrderItem item : items) {
			total += item.getPrice() * item.getNum();
		}
		return total * cutoff;
	}

	/**
	 * 还能用在集合里面(所有实现了Iterable接口的类都可以使用for..in)
	 * 
	 * 对于实现了Iterable接口的实现类来说,其实采用的仍然是Iterator的遍历
	 * 
	 * 当我们理解了for..in对于Iterable的实现原理,有些操作就不能随便来了。
	 */
	private static Double count(double cutoff, List orderItems) {
		Double total = 0d;
		for (Object item : orderItems) {
			OrderItem temp = (OrderItem) item;
			total += temp.getPrice() * temp.getNum();
		}
		return total * cutoff;
	}

	/**
	 * 把低于给定价格的orderItem去掉
	 * 下面这种使用for..in的方法报错:java.util.ConcurrentModificationException(并发修改错误)
	 * 
	 * 迭代的原理:
	 * 如果使用增强for循环,不能在迭代当中使用集合本身的方法来修改集合,只能使用迭代器对应的方法.
	 * 但是有一个列外,如果集合只有两个元素,操作remove是允许的
	 * 
	 * @param price
	 * @param orderItems
	 * @return
	 */
	private static List filter(Double price, List orderItems) {
		for (Object object : orderItems) {
			OrderItem item = (OrderItem) object;
			if (item.getPrice() < price) {
				orderItems.remove(item);
			}
		}
//		for(Iterator it=orderItems.iterator();it.hasNext();){
//			OrderItem item = (OrderItem) it.next();
//			if (item.getPrice() < price) {
//				//只能使用跌带器提供的remove方法。
//				it.remove();
//			}
//		}
		return orderItems;
	}

}
分享到:
评论

相关推荐

    Java开发技术大全(500个源代码).

    showCount.java 循环计数示例 showDoubleLoop.java 演示双重循环 showDoubleLoopSe.java 改进的双重循环 showOrder_1.java 演示操作数求值顺序示例1 showOrder_2.java 演示操作数求值顺序示例2 sign.java 用...

    JavaScript中“过于”犀利地for/in循环使用示例

    Java中的增强for循环很是好用,但是JavaScript中为我们提供的for/in循环已然不是这么简单了,下面有个简单的示例,大家不妨参考下

    java基础案例与开发详解案例源码全

    4.5 增强for循环116 4.6 本章练习117 第5章 5.1 面向过程的设计思想120 5.2 面向对象的设计思想120 5.3 抽象121 5.3.1 对象的理解121 5.3.2 Java抽象思想的实现122 5.4 封装124 5.4.1 对象封装的概念理解124 5.4.2 ...

    JAVA基础课程讲义

    增强for循环 114 思考作业 114 上机作业 115 第六章 常用类的使用 117 基本数据类型的包装类 117 包装类基本知识 117 包装类的用途 118 自动装箱和拆箱?autoboxing,unboxing 119 字符串相关类(String、 ...

    Java编程艺术 PDF

    3.5.11 FOR循环 79 3.5.12 GOSUB 82 3.5.13 END语句 83 3.6 Small BASIC的使用 83 3.7 对解释器进行增强和扩展 86 3.8 创建自己的计算机语言 86 第4章 使用Java创建下载管理器 88 4.1 深入理解Internet下载流程 89 ...

    Java开发技术大全 电子版

    14.9.5增强网格布局(GridBagLayout)使用示例532 14.9.6Swing新增的布局管理535 14.10GUI程序设计实例1——色盲检测536 14.10.1界面的实现536 14.10.2“开始”按钮的事件处理538 14.10.3“确定”按钮的事件...

    java 编程艺术

    3.5.11 FOR循环 79 3.5.12 GOSUB 82 3.5.13 END语句 83 3.6 Small BASIC的使用 83 3.7 对解释器进行增强和扩展 86 3.8 创建自己的计算机语言 86 第4章 使用Java创建下载管理器 88 4.1 深入理解Internet下载...

    RED HAT LINUX 6大全

    本书全面系统地介绍了Red Hat Linux 6。全书共分为五个部分,包括35章和四个附录。第一部分为Red Hat Linux的介绍和安装;第二部分为服务配置;第三部分为系统管理;第四部分为Linux编程;第五部分为附录。...

    Python核心编程第二版(ok)

     2.13 for循环和range()内建函数   2.14 列表解析   2.15 文件和内建函数open().cfile()   2.16 错误和异常   2.17 函数   2.17.1 如何定义函数   2.17.2 如何调用函数   2.17.3 默认...

    Python核心编程第二版

     2.13 for循环和range()内建函数   2.14 列表解析   2.15 文件和内建函数open()、file()   2.16 错误和异常   2.17 函数   2.17.1 如何定义函数   2.17.2 如何调用函数   2.17.3 默认...

    二十三种设计模式【PDF版】

    目标原则是:降低耦合,增强灵活性. 建筑和软件中模式之异同 CSDN 的透明特别推崇《建筑的永恒之道》,认为从中探寻到软件的永恒之道,并就"设计模式"写了专门文章《探寻软件的永恒 之道 》,其中很多观点我看了很受...

    Visual C#2010 从入门到精通(Visual.C#.2010.Step.By.Step).完整去密码锁定版 I部分

    无论是刚开始接触面向对象编程的新手,还是打算转移到c#的具有c,c++或者java基础的程序员,都可以从本书中吸取到新的知识。 作译者 john sharp,content master首席技术专家。content master隶属于cm集团,cm集团...

    jquery插件使用方法大全

    例如,使用了新的jQuery内部Ajax API就可以实现下面的代码了: // Assign handlers immediately after making the request, // and remember the jxhr object for this request var jxhr = $.ajax({ url: "example....

    JavaScript高级教程

    第 1 章 JavaScript 是什么...............................................1 3 1.1 历史简述..............................................1 1.2 JavaScript 实现................................................

Global site tag (gtag.js) - Google Analytics