结论:无论是数组还是Collection for each 都是一个非常好的选择

一、for each底层实现

对于Collection,for each是隐式调用Iterator实现的,效率比显示调用Iterator略低,对于Array,for each是通过对下标引用实现的,效率比for循环要略低。for each返回的是Collection一个对象,因此不能用for each进行赋值操作。

二、Collection实现了java.lang.Iterable接口具有java.util.Iterator<E> iterator(),所以List、Queue、Set均可使用for each方式遍历。

三、HashMap三种遍历方式:

map.entrySet()会返回一个Set<Entry<K,V>>,然后使用for each(隐式调用Iterator)

Map<String, String> map = new HashMap<String, String>();
for (Entry<String, String> entry : map.entrySet()) {
entry.getKey();
entry.getValue();
}

 ②map.keySet()会返回一个Set<Key>,然后使用for each(隐式调用Iterator)

Map<String, String> map = new HashMap<String, String>();
for (String key : map.keySet()) {
map.get(key);
}

 ③map.value()会返回一个Collection<Value>,然后使用for each(隐式调用Iterator)

Array转List

String[] strArray = {"aaa", "bbb", "ccc"};   
List list= Arrays.asList(strArray);

注意list为ArrayList类型,但和java.util.ArrayList是不一样的。StrArray必须为对象数组,如果为基本类型数组的话,list.size()为1,

Collection转数组
直接使用Collection的toArray()方法

Map转Collection
直接使用Map的values()方法。
List和Set转换

直接通过构造函数传递一个Collection对象即可。

参考文献:http://www.cnblogs.com/xwdreamer/archive/2012/05/30/2526822.html

Collection、Map、数组 遍历方式的更多相关文章

  1. JS几种数组遍历方式以及性能分析对比

    前言 这一篇与上一篇 JS几种变量交换方式以及性能分析对比 属于同一个系列,本文继续分析JS中几种常用的数组遍历方式以及各自的性能对比 起由 在上一次分析了JS几种常用变量交换方式以及各自性能后,觉得 ...

  2. JS 中的数组遍历方式效率比较

    JS数组遍历,基本就是for,forin,foreach,forof,map等等一些方法,以下介绍几种本文分析用到的数组遍历方式以及进行性能分析对比 第一种:普通for循环 代码如下: ; j < ...

  3. JS几种数组遍历方式总结

    JS数组遍历的几种方式 JS数组遍历,基本就是for,forin,foreach,forof,map等等一些方法,以下介绍几种本文分析用到的数组遍历方式以及进行性能分析对比 第一种:普通for循环 代 ...

  4. Java Map各遍历方式的性能比较

    1. 阐述 对于Java中Map的遍历方式,很多文章都推荐使用entrySet,认为其比keySet的效率高很多.理由是:entrySet方法一次拿到所有key和value的集合:而keySet拿到的 ...

  5. Java8 Map的遍历方式

    在这篇文章中,我将对Map的遍历方式做一个对比和总结,将分别从JAVA8之前和JAVA8做一个遍历方式的对比,亲测可行. public class LambdaMap { private Map< ...

  6. Java8中Map的遍历方式总结

    在这篇文章中,我将对Map的遍历方式做一个对比和总结,将分别从JAVA8之前和JAVA8做一个遍历方式的对比,亲测可行. public class LambdaMap { private Map< ...

  7. Map的遍历方式

    public class Mapper { public static void main(String[] args) {  Map<String, String> map = new ...

  8. es6新增的数组遍历方式

    1.some方法 1)some() 方法测试是否至少有一个元素通过由提供的函数实现的测试. 2)参数列表: arr.some(callback(element[, index[, array]])[, ...

  9. map的遍历方式(使用Junit测试)

    package cn.sdut.lah; import java.util.HashMap; import java.util.Iterator; import java.util.Map; impo ...

随机推荐

  1. Java Programming Test Question 1

    public class JPTQuestion1 { public static void main(String[] args) { String s1 = "abc"; St ...

  2. CFgym Board Queries (旋转、翻转简化)

    http://codeforces.com/gym/100497 codeforces 2014-2015 CT S02E04: Codeforces Trainings Season 2 Episo ...

  3. C#集合类图继承关系一览表

  4. [译]git fetch

    git fetch从远程仓储导入commit到你的本地仓储. 这些fetch到的commit是做为一个远程分支存储在你本地的. 这样你可以在集成这些commit到你的项目前先看看都有些什么修改. 用法 ...

  5. 【Bootstrap】Bootstrap和Java分页-第二篇

    目录 关于此文 配置xml-pager.tld 分页控件-Pager 分页action集成类-BaseController 实例-Dao 实例-service 实例-action 实例-JSP 实例- ...

  6. gspx请求周期(备忘)

  7. R语言练习(一)

    b = seq(from=0, to=1, by=0.001) #一次方 l1 = function(b){ b^1 } y1 = l1(b) #二次方 l2 = function(b){ b^2 } ...

  8. 2015Summer Training #2

    暑假集训昨天刚开始,14级的小伙伴快到齐了,hhhhh ,毕竟下学期区域赛,对我们来说还是很困难的. 打算每天写份总结. UVA 11300 C.Spreading the Wealth 题目大意:n ...

  9. jquery选择器(二)-层次选择器

    1. 后代选择器 2. 子元素选择器 3. 相邻兄弟元素选择器 4. 一般兄弟元素选择器(同辈元素选择器) 5. 补充(除自身以外的前后同辈选择器)

  10. 【C语言入门教程】5.3 函数的调用 与 参数

    函数通过调用获得程序的控制权,函数的参数是调用者与函数的数据接口.函数可以定义一个或多个参数,也可以省略参数,调用时将与参数的数据类型相匹配的数据置于参数列表中,即可在函数体内使用.参数的调用有多种形 ...