在使用一边做迭代操作一边做删除数组元素操作是应该使用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的选择的更多相关文章

  1. Java 8 新特性——Lambdas 表达式

    本文内容 引入 测试数据 collect(toList()) map filter flatMap max 和 min reduce 整合操作 参考资料 Java 8 对核心类库的改进主要包括集合类的 ...

  2. Java 8 新特性-Stream更优雅的处理集合入门

    Java 8 新特性之--Stream 一. 简单介绍 Stream是Java 8提出了的一种新的对集合对象功能的增强.它集合Lambda表达式,对集合提供了一些非常便利,高效的操作,使得代码具有非常 ...

  3. Java 8 新特性之 Stream 流基础体验

    Java 8 新特性之 Stream 流基础体验 package com.company; import java.util.ArrayList; import java.util.List; imp ...

  4. IBM Developer:Java 9 新特性概述

    Author: 成富 Date: Dec 28, 2017 Category: IBM-Developer (20) Tags: Java (27) 原文地址:https://www.ibm.com/ ...

  5. Java 8 新特性——检视阅读

    Java 8 新特性--检视阅读 参考 Java 8 新特性--菜鸟 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的 ...

  6. Java 8 新特性——实践篇

    Java 8 新特性--实践篇 参考 Java8新特性 重要更新:Lambda 表达式和Stream API Lambda 表达式 Lambda 表达式引入之前: 举个场景例子:当我们要对一个班级里的 ...

  7. JAVA 8 新特性实用总JAVA 8 新特性实用总结结

    JAVA 8 新特性实用总结 作为一个工作两年多的 老 程序猿,虽然一开始就使用 jdk1.8 作为学习和使用的版本,随着技术的迭代,现有的 JDK 版本从两年前到现在,已经飞速发展到了 JDK 15 ...

  8. Java 8新特性-4 方法引用

    对于引用来说我们一般都是用在对象,而对象引用的特点是:不同的引用对象可以操作同一块内容! Java 8的方法引用定义了四种格式: 引用静态方法     ClassName :: staticMetho ...

  9. Spring 4支持的Java 8新特性一览

    有众多新特性和函数库的Java 8发布之后,Spring 4.x已经支持其中的大部分.有些Java 8的新特性对Spring无影响,可以直接使用,但另有些新特性需要Spring的支持.本文将带您浏览S ...

随机推荐

  1. bzoj 4555 [Tjoi2016&Heoi2016]求和——NTT+第二类斯特林数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4555 第二类斯特林数展开式: \( S(i,j) = \frac{1}{j!} \sum\l ...

  2. laravel 中条件查询 function模式

    当需要条件查找时,可以使用下面的注入方法: //我要预约 yudoc_name yudoc_keshi yudoc_jibing yudoc_hospital 这是需要帅选的条件 public fun ...

  3. 【原创】官方文档-hive 启动命令

    [一起学Hive]之十六-Hive的WEB页面接口-HWI Apache Hive 管网 hive metrics hive常用命令整理 Hive学习之HiveServer2服务端配置与启动 启动hi ...

  4. 微信小程序之wx.getLocation再次授权问题解决

    首先,在page外定义一个公共函数用于发送获取位置的请求 var getLocation = function (that) { wx.getLocation({ type: 'wgs84', suc ...

  5. 循序渐进Python3(十三) --0-- django之form表单

    django为我们提供了form表单验证功能,下面来学习一下: 武sir博客:http://www.cnblogs.com/wupeiqi/articles/5246483.html  创建了djan ...

  6. MySQL高可用MHA实战

    MySQL高可用架构MHA介绍 简介: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职 ...

  7. c# 类型化变量的var,和javascript一样的使用

    .net framework推出var关键字,注意是关键字,不是什么新类型,只是编译器抛给我们的“语法糖” 1.object是所有类型的父类型,object a=1;和var a=1:的区别在于前一个 ...

  8. Python绘图matplotlib

    转自http://blog.csdn.net/ywjun0919/article/details/8692018 Python图表绘制:matplotlib绘图库入门 matplotlib 是pyth ...

  9. typedef&nbsp;struct与struct的区别

    typedef struct与struct的区别 1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数据类型(int,char等)和自定义的数据 ...

  10. sftp put权限不够

    报错如下: sftp> put play.zip ./ Uploading play.zip to /opt/library/./play.zip remote open("/opt/ ...