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;
	}

}