Java基础--forEach循环使用

/**
 * forEach语句的使用:
 * for(类型 变量 :Collection 集合 or 数组) {}
 */
public class ForEachDemo {
	public static void main(String[] args) {
		int [] is = {1,55,63,28,96,107,36};
		List<String> ls = new ArrayList<String>();
		Map<Integer, String> mp = new HashMap<Integer,String>();
		System.out.println("数据数据:");
		forEach1(is);
		System.out.println("List数据:");
		forEach2(ls);
		System.out.println("Map数据:");
		forEach3(mp);
		//JDK5.0传递可变参数
		int con = fonctions(2,5,99,66,555,12);
		System.out.println("累计和为:"+con);
	}
	
	//参数个数不确定:int a,int ... arr.错误写法:int ... arr,int a
	private static int fonctions(int a,int ... arr) {
		int con = 0;
		for (int i = 0; i < arr.length; i++) {
			con+=arr[i];
		}
		return con+a;
	}
	
	//forEach循环不能迭代双列集合,所以先转换为单列集合,根据key获取value
	private static void forEach3(Map<Integer, String> mp) {
		mp.put(20, "小明");
		mp.put(33, "小强");
		mp.put(12, "王五");
		System.out.println("转换方式一:");
		for (Integer key:mp.keySet()){
			String val = mp.get(key);
			System.out.println(key+": "+val);
		}
		System.out.println("转换方式二:");
		for (Map.Entry<Integer, String> me : mp.entrySet()) {//使用entrySet()方法
			String val = me.getValue();
			Integer key = me.getKey();
			System.out.println(key+":"+val);
		}
	}
	
	private static void forEach1(int[] is) {
		for (int i : is) {
			System.out.println(i);
		}
	}
	
	private static void forEach2(List<String> ls) {
		ls.add("abc");
		ls.add("cbd");
		ls.add("nba");
		ls.add("dcoooll");
		
		/** 下面是系统中自己生成的代码,可以看出Java在,jdk1.5内部实现也是调用了下面代码。
		for (Iterator<String> iterator = ls.iterator(); iterator.hasNext();) {
			String str = iterator.next();
			System.out.println(str);
		}
		*/
		for (String str : ls){
			System.out.println(str);
		}
	}
}
/**
 * forEach和for的区别:
 * 1.for可以自定义循环控制的条件,并且可以多次操作。
 * 2.forEach,使用的范围必须是数组、单列集合Collection、List.....
 * 3.如果要对数组的角标操作,建议使用for
 */

运行结果:
数据数据:
1
55
63
28
96
107
36
List数据:
abc
cbd
nba
dcoooll
Map数据:
转换方式一:
33: 小强
20: 小明
12: 王五
转换方式二:
33:小强
20:小明
12:王五
累计和为:739

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值