Java 5新特性 for each 和Iterator的选择
在使用一边做迭代操作一边做删除数组元素操作是应该使用Iterator
package for_each_And_Iterator; public class Commodity {
private String goods;
private double price;
private int num; public Commodity(String goods, double price, int num) {
this.goods = goods;
this.price = price;
this.num = num;
} public String getGoods() {
return goods;
} public double getPrice() {
return price;
} public int getNum() {
return num;
} public String toString() {
return "Commodity [goods=" + goods + ", price=" + price + ", num=" + num + "]";
} }
package for_each_And_Iterator; import java.util.ArrayList;
import java.util.List; public class For_eachDemo {
public static double sum() {
//创建三个商品对象
Commodity cy1 = new Commodity("phone", 1000.0, 5);
Commodity cy2 = new Commodity("computer", 3000.0, 12);
Commodity cy3 = new Commodity("headset", 15.0, 30);
List<Commodity> list = new ArrayList<Commodity>();
list.add(cy1);
list.add(cy2);
list.add(cy3);
double coy = 0.0;
for (Commodity index : list) {
// if(index.getPrice()<1000){
// //并发修改异常
// list.remove(index);//Exception in thread "main" java.util.ConcurrentModificationException
// System.out.println(list);
// }
coy += (index.getPrice() * index.getNum());
}
return coy;
}
public static void main(String[] args) {
System.out.println(sum());
}
}
package for_each_And_Iterator; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; public class IteratorDemo {
//获取商品单价小于1000的商品
public static double sum() {
//创建三个商品对象
Commodity cy1 = new Commodity("phone", 1000.0, 5);
Commodity cy2 = new Commodity("computer", 3000.0, 12);
Commodity cy3 = new Commodity("headset", 15.0, 30);
List<Commodity> list = new ArrayList<Commodity>();
list.add(cy1);
list.add(cy2);
list.add(cy3);
double coy = 0.0;
for (Iterator<Commodity> it = list.iterator(); it.hasNext();) {
Commodity comy = it.next();
if (comy.getPrice() < 1000) {
it.remove();//Iterator的.remove();
}
}
for (Commodity commodity : list) {
coy += commodity.getPrice() * commodity.getNum();
System.out.println(commodity);
}
return coy;
} public static void main(String[] args) {
System.out.println(sum());
}
}
Java 5新特性 for each 和Iterator的选择的更多相关文章
- Java 8 新特性——Lambdas 表达式
本文内容 引入 测试数据 collect(toList()) map filter flatMap max 和 min reduce 整合操作 参考资料 Java 8 对核心类库的改进主要包括集合类的 ...
- Java 8 新特性-Stream更优雅的处理集合入门
Java 8 新特性之--Stream 一. 简单介绍 Stream是Java 8提出了的一种新的对集合对象功能的增强.它集合Lambda表达式,对集合提供了一些非常便利,高效的操作,使得代码具有非常 ...
- Java 8 新特性之 Stream 流基础体验
Java 8 新特性之 Stream 流基础体验 package com.company; import java.util.ArrayList; import java.util.List; imp ...
- IBM Developer:Java 9 新特性概述
Author: 成富 Date: Dec 28, 2017 Category: IBM-Developer (20) Tags: Java (27) 原文地址:https://www.ibm.com/ ...
- Java 8 新特性——检视阅读
Java 8 新特性--检视阅读 参考 Java 8 新特性--菜鸟 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的 ...
- Java 8 新特性——实践篇
Java 8 新特性--实践篇 参考 Java8新特性 重要更新:Lambda 表达式和Stream API Lambda 表达式 Lambda 表达式引入之前: 举个场景例子:当我们要对一个班级里的 ...
- JAVA 8 新特性实用总JAVA 8 新特性实用总结结
JAVA 8 新特性实用总结 作为一个工作两年多的 老 程序猿,虽然一开始就使用 jdk1.8 作为学习和使用的版本,随着技术的迭代,现有的 JDK 版本从两年前到现在,已经飞速发展到了 JDK 15 ...
- Java 8新特性-4 方法引用
对于引用来说我们一般都是用在对象,而对象引用的特点是:不同的引用对象可以操作同一块内容! Java 8的方法引用定义了四种格式: 引用静态方法 ClassName :: staticMetho ...
- Spring 4支持的Java 8新特性一览
有众多新特性和函数库的Java 8发布之后,Spring 4.x已经支持其中的大部分.有些Java 8的新特性对Spring无影响,可以直接使用,但另有些新特性需要Spring的支持.本文将带您浏览S ...
随机推荐
- bzoj 4555 [Tjoi2016&Heoi2016]求和——NTT+第二类斯特林数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4555 第二类斯特林数展开式: \( S(i,j) = \frac{1}{j!} \sum\l ...
- laravel 中条件查询 function模式
当需要条件查找时,可以使用下面的注入方法: //我要预约 yudoc_name yudoc_keshi yudoc_jibing yudoc_hospital 这是需要帅选的条件 public fun ...
- 【原创】官方文档-hive 启动命令
[一起学Hive]之十六-Hive的WEB页面接口-HWI Apache Hive 管网 hive metrics hive常用命令整理 Hive学习之HiveServer2服务端配置与启动 启动hi ...
- 微信小程序之wx.getLocation再次授权问题解决
首先,在page外定义一个公共函数用于发送获取位置的请求 var getLocation = function (that) { wx.getLocation({ type: 'wgs84', suc ...
- 循序渐进Python3(十三) --0-- django之form表单
django为我们提供了form表单验证功能,下面来学习一下: 武sir博客:http://www.cnblogs.com/wupeiqi/articles/5246483.html 创建了djan ...
- MySQL高可用MHA实战
MySQL高可用架构MHA介绍 简介: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职 ...
- c# 类型化变量的var,和javascript一样的使用
.net framework推出var关键字,注意是关键字,不是什么新类型,只是编译器抛给我们的“语法糖” 1.object是所有类型的父类型,object a=1;和var a=1:的区别在于前一个 ...
- Python绘图matplotlib
转自http://blog.csdn.net/ywjun0919/article/details/8692018 Python图表绘制:matplotlib绘图库入门 matplotlib 是pyth ...
- typedef struct与struct的区别
typedef struct与struct的区别 1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数据类型(int,char等)和自定义的数据 ...
- sftp put权限不够
报错如下: sftp> put play.zip ./ Uploading play.zip to /opt/library/./play.zip remote open("/opt/ ...