精华内容
下载资源
问答
  • 因此使用map,让数组(原本是list)变成一个map集合(key-value形式),把主键id当做key,下标当做value,一一对应,需要的时候直接使用map.get(key)就可以获取到对应的value 1.在data{}中先定义一个map全局变量 2...
  • Java 8 forEach循环一个List和Map

    千次阅读 2018-06-06 18:28:16
    在这篇文章中,我将向您展示如何用新的Java 8 forEach语句循环一个List和Map。1、forEach 和 Map1.1、常规循环Map常用的方法。Map<String ,Integer> items = new HashMap<>(); items....

    在这篇文章中,我将向您展示如何用新的Java 8 forEach语句循环一个List和Map。

    1、forEach 和 Map

    1.1、常规循环Map常用的方法。

    Map<String ,Integer> items = new HashMap<>();
    items.put("A",10);
    items.put("B",20);
    items.put("C",30);
    items.put("D",40);
    items.put("E",50);
    items.put("F",60);
    
    for(Map.Entry<String Integer> entry : items.entrySet()){
       System.out.println("Item : "+enty.getKey() + " Count :" + entry.getVlaue())
    }

    1.2 、在Java 8中, 你可以用forEach + lambda表达式来循环Map

    		Map<String, Integer> items = new HashMap<>();
    		items.put("A", 10);
    		items.put("B", 20);
    		items.put("C", 30);
    		items.put("D", 40);
    		items.put("E", 50);
    		items.put("F", 60);
    		items.forEach((k,v)->System.out.println(" Item : "+ k + " Count : " + v));
    		//items.forEach((k,v)->{System.out.println(" Item : "+ k + " Count : " + v);});
    		
    		items.forEach((k,v)->{
    			System.out.println("Item : " + k + " Count : " + v);
    			if("E".equals(k)){
    				System.out.println("Hello E");
    			}
    		});

    2、forEach 和 List

    2.1、常规的循环List的方法

    List<String> items = new ArrayList<>();
    		items.add("Anna");
    		items.add("Brian");
    		items.add("Cici");
    		items.add("Elena");
    		
    		//常规的循环List的方法
    		for(String item : items){
    			System.out.println(item);
    		}

    2.2、在Java 8中, 你可以用forEach + lambda表达式  或者方法调用来循环Map

    		Map<String, Integer> items = new HashMap<>();
    		items.put("A", 10);
    		items.put("B", 20);
    		items.put("C", 30);
    		items.put("D", 40);
    		items.put("E", 50);
    		items.put("F", 60);	
    		//在Java 8中, 你可以用forEach + lambda表达式来循环Map
    		//输出上面put的所有列表
    		items.forEach((k,v)->System.out.println(" Item : "+ k + " Count : " + v));
    		//items.forEach((k,v)->{System.out.println(" Item : "+ k + " Count : " + v);});
    		
    		//输出上面put的所有列表 + Hello E
    		items.forEach((k,v)->{
    			System.out.println("Item : " + k + " Count : " + v);
    			if("E".equals(k)){
    				System.out.println("Hello E");
    			}
    		});

    Map

    package com.foreach.learn;
    import java.util.HashMap;
    import java.util.Map;
    public class forEachLearnMap {
    	public static void main(String[] args) {
    		//forEach 和  Map
    		Map<String, Integer> items = new HashMap<>();
    		items.put("A", 10);
    		items.put("B", 20);
    		items.put("C", 30);
    		items.put("D", 40);
    		items.put("E", 50);
    		items.put("F", 60);		
    		//常规的循环Map的方法
    		for(Map.Entry<String, Integer> entry : items.entrySet()) {
    			System.out.println(" Item : "+ entry.getKey() + " Count : " + entry.getValue());			
    		}
    		
    		//在Java 8中, 你可以用forEach + lambda表达式来循环Map
    		//输出上面put的所有列表
    		items.forEach((k,v)->System.out.println(" Item : "+ k + " Count : " + v));
    		//items.forEach((k,v)->{System.out.println(" Item : "+ k + " Count : " + v);});
    		
    		//输出上面put的所有列表 + Hello E
    		items.forEach((k,v)->{
    			System.out.println("Item : " + k + " Count : " + v);
    			if("E".equals(k)){
    				System.out.println("Hello E");
    			}
    		});
    		
    	}
    	
    }

    Lsit:

    package com.foreach.learn;
    import java.util.ArrayList;
    import java.util.List;
    public class forEachLearnList {
    	public static void main(String[] args) {		
    		List<String> items = new ArrayList<>();
    		items.add("Anna");
    		items.add("Brian");
    		items.add("Cici");
    		items.add("Elena");
    		
    		//常规的循环List的方法
    		for(String item : items){
    			System.out.println(item);
    		}
    				
    		//在Java 8中, 你可以用forEach + lambda表达式  或者方法调用来循环Map		
    		//lambda
    		//输出 : Anna, Brian, Cici, Elena
    		items.forEach(item->System.out.println(item));
    		
    		//输出 Cici
    		items.forEach(item->{
    			if("Cici".equals(item)){
    				System.out.println(item);
    			}
    		});
    		
    		//方法调用
    		//输出 : Anna, Brian, Cici, Elena
    		items.forEach(System.out::println);
    		
    		//Stream and filter
    		//输出Brian
    		items.stream()
    		.filter(s->s.contains("Brian"))
    		.forEach(System.out::println);		
    	}
    
    }
    

    展开全文
  • Map循环遍历详解

    千次阅读 2018-12-29 16:40:16
    HashMap循环遍历方式及其性能对比 参考博客:https://www.cnblogs.com/imzhj/p/5981665.html 1. Map的四种遍历方式 下面只是简单介绍各种遍历示例(以HashMap为例),各自优劣会在本文后面进行分析给出结论。 (1) ...

    HashMap循环遍历方式及其性能对比

    参考博客:https://www.cnblogs.com/imzhj/p/5981665.html

    1. Map的四种遍历方式
    下面只是简单介绍各种遍历示例(以HashMap为例),各自优劣会在本文后面进行分析给出结论。

    (1) for each map.entrySet()

    Java

    1

    2

    3

    4

    5

    Map<String, String> map = new HashMap<String, String>();

    for (Entry<String, String> entry : map.entrySet()) {

    entry.getKey();

    entry.getValue();

    }

    (2) 显示调用map.entrySet()的集合迭代器

    Java

    1

    2

    3

    4

    5

    6

    Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();

    while (iterator.hasNext()) {

    Map.Entry<String, String> entry = iterator.next();

    entry.getKey();

    entry.getValue();

    }

    (3) for each map.keySet(),再调用get获取

    Java

    1

    2

    3

    4

    Map<String, String> map = new HashMap<String, String>();

    for (String key : map.keySet()) {

    map.get(key);

    }

    (4) for each map.entrySet(),用临时变量保存map.entrySet()

    Java

    1

    2

    3

    4

    5

    Set<Entry<String, String>> entrySet = map.entrySet();

    for (Entry<String, String> entry : entrySet) {

    entry.getKey();

    entry.getValue();

    }

    在测试前大家可以根据对HashMap的了解,想想上面四种遍历方式哪个性能更优。

    2、HashMap四种遍历方式的性能测试及对比
    以下是性能测试代码,会输出不同数量级大小的HashMap各种遍历方式所花费的时间。

    HashMap循环遍历方式性能对比测试代码

    PS:如果运行报异常in thread “main” java.lang.OutOfMemoryError: Java heap space,请将main函数里面map size的大小减小。

    其中getHashMaps函数会返回不同size的HashMap。
    loopMapCompare函数会分别用上面的遍历方式1-4去遍历每一个map数组(包含不同大小HashMap)中的HashMap。
    print开头函数为输出辅助函数,可忽略。

    测试环境为Windows7 32位系统 3.2G双核CPU 4G内存,Java 7,Eclipse -Xms512m -Xmx512m
    最终测试结果如下:

    Java

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    compare loop performance of HashMap

    -----------------------------------------------------------------------

    map size               | 10,000    | 100,000   | 1,000,000 | 2,000,000

    -----------------------------------------------------------------------

    for each entrySet      | 2 ms      | 6 ms      | 36 ms     | 91 ms    

    -----------------------------------------------------------------------

    for iterator entrySet  | 0 ms      | 4 ms      | 35 ms     | 89 ms    

    -----------------------------------------------------------------------

    for each keySet        | 1 ms      | 6 ms      | 48 ms     | 126 ms    

    -----------------------------------------------------------------------

    for entrySet=entrySet()| 1 ms      | 4 ms      | 35 ms     | 92 ms    

    -----------------------------------------------------------------------

    表横向为同一遍历方式不同大小HashMap遍历的时间消耗,纵向为同一HashMap不同遍历方式遍历的时间消耗。
    PS:由于首次遍历HashMap会稍微多耗时一点,for each的结果稍微有点偏差,将测试代码中的几个Type顺序调换会发现,for each entrySet耗时和for iterator entrySet接近。

    3、遍历方式性能测试结果分析
    (1) foreach介绍
    见:ArrayList和LinkedList的几种循环遍历方式及性能对比分析中介绍。

    (2) HashMap遍历方式结果分析
    从上面知道for each与显示调用Iterator等价,上表的结果中可以看出除了第三种方式(for each map.keySet()),再调用get获取方式外,其他三种方式性能相当。本例还是hash值散列较好的情况,若散列算法较差,第三种方式会更加耗时。
    我们看看HashMap entrySet和keySet的源码

    Java

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    private final class KeyIterator extends HashIterator<K> {

    public K next() {

    return nextEntry().getKey();

    }

    }

     

    private final class EntryIterator extends HashIterator<Map.Entry<K,V>> {

    public Map.Entry<K,V> next() {

    return nextEntry();

    }

    }

    分别是keySet()和entrySet()返回的set的迭代器,从中我们可以看到只是返回值不同而已,父类相同,所以性能相差不多。只是第三种方式多了一步根据key get得到value的操作而已。get的时间复杂度根据hash算法而异,源码如下:

    Java

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    public V get(Object key) {

    if (key == null)

    return getForNullKey();

    Entry<K,V> entry = getEntry(key);

     

    return null == entry ? null : entry.getValue();

    }

     

    /**

    * Returns the entry associated with the specified key in the

    * HashMap.  Returns null if the HashMap contains no mapping

    * for the key.

    */

    final Entry<K,V> getEntry(Object key) {

    int hash = (key == null) ? 0 : hash(key);

    for (Entry<K,V> e = table[indexFor(hash, table.length)];

    e != null;

    e = e.next) {

    Object k;

    if (e.hash == hash &&

    ((k = e.key) == key || (key != null && key.equals(k))))

    return e;

    }

    return null;

    }

    get的时间复杂度取决于for循环循环次数,即hash算法。

    4、结论总结

    从上面的分析来看:
    a. HashMap的循环,如果既需要key也需要value,直接用

    Java

    1

    2

    3

    4

    5

    Map<String, String> map = new HashMap<String, String>();

    for (Entry<String, String> entry : map.entrySet()) {

    entry.getKey();

    entry.getValue();

    }

    即可,foreach简洁易懂。

    b. 如果只是遍历key而无需value的话,可以直接用

    Java

    1

    2

    3

    4

    Map<String, String> map = new HashMap<String, String>();

    for (String key : map.keySet()) {

    // key process

    }

    最后再给一个很好的参考博客:

    https://blog.csdn.net/qq_35661171/article/details/79123842 

    展开全文
  • js 循环 map

    千次阅读 2017-03-15 17:27:53
    js 中,循环 map ,遍历取值,需要用 of

    js 中,循环 map ,遍历取值,需要用 of 


    展开全文
  • vue循环遍历map

    千次阅读 2020-08-18 11:38:20
    <div class="form-group row" v-for="(item,index) in paramsMap" :key="index"> <!-- index 为Key--> <label class="col-sm-2 col-form-label">{{index}}</label>... .
     <div class="form-group row" v-for="(item,index) in paramsMap" :key="index">
     	<!-- index 为Key-->
         <label class="col-sm-2 col-form-label">{{index}}</label>
         <div class="col-sm-10">
         	<!-- item为value-->
             <input class="form-control" v-model="item"/>
         </div>
     </div>
    
    展开全文
  • 循环list中的map

    千次阅读 2019-11-20 10:49:49
    循环list<Map> java后台list代码: List<Map> aa = new ArrayList<Map>(); Map map = new HashMap(); map.put("1", "痘痘"); aa.add(map); Map map1 = new HashMap(); map1.put("2", ...
  • 使用Map对于两层for循环一个优化

    千次阅读 2017-08-29 16:56:59
    使用Map的get方法来对某些情形下的f多重or循环进行优化。 没有优化前代码List> result = new ArrayList(); List> result1 = new ArrayList(); List> result2 = new ArrayList(); result1 = CITService....
  • Java基础Map循环遍历

    千次阅读 2018-08-09 17:26:24
    import java.util.HashMap; import java.util.Iterator;... *@purpose:几种常见的Map循环 *@author:jianxiapc *@since:2018年8月9日 ***/ public class MapIterator { public static void...
  • 今天开发遇到的问题,想用map装数据,只是在for循环之外new了一个map,想做for中用,改变里面的值,放入list中,结果导致数据都是一样的,最后只有每次新new一个对象   代码:  for (int i=0;i&lt;...
  • Java - 循环中创建mapList

    千次阅读 2019-08-13 23:06:28
    import java.util.ArrayList; import java.util.HashMap; import java.util.List;...import java.util.Map; public class LoopMapTest { /** * 在 Loop 中创建Map数组 */ public static vo...
  • map的四种循环方式

    千次阅读 2017-12-08 15:19:09
    public class MapTest { public static void main(String[] args) { Map,String> map = new HashMap, String>(); map.put("1", "value1"); map.put("2", "value2");... //map的四种循环方式 Set<Strin
  • 前端的几种循环map forEach等

    千次阅读 2019-11-15 17:36:01
    今天给大家分享一些前端的基础知识,循环 forEach循环 ... // 一般俩参数 可以加上原数组 val每项,index索引,arr原数组。 arr.forEach((val,index,arr) => { console.log(val,index,arr) ...
  • for循环取出Map的值

    千次阅读 2019-12-06 16:56:20
    1.取出Map其中一个属性的值 Map map = new HashMap(); map.put("key1", "value1"); map.put("key2", "value2"); List> list = new ArrayList>(); list.add(map); for(int i = 0;i < list.size();i++) { ...
  • java循环Map

    千次阅读 2019-04-18 17:47:18
    java循环Map
  • Java Map的几种循环方式学习总结

    万次阅读 2016-02-16 17:29:04
    java Map的几种循环总结
  • react map 双重循环 嵌套循环

    万次阅读 2018-09-03 16:17:17
    如图,数据是模拟后台输出的json,通过双重循环将数据放到侧边栏中 json数据如下 { "items":[ { "item": "BeJson", "menuItem": ["menu1","menu...
  • MyBatis循环Map(高级用法)

    千次阅读 2020-09-22 15:26:08
    MyBatis循环Map 今天遇到一个比较特殊的业务,需要对传入的Map数据在映射文件中进行遍历,在之前的学习中,我们也知道MyBatis有默认对集合的操作list 和 array ,但是没有默认的 map ,所有不能直接写 collection=...
  • java中Map循环的几种方式

    万次阅读 2018-07-18 20:57:38
    package ... import org.junit.Test; import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * xuhaixing * 2018/7/15 19:59 **/ public class TestHashMapApp {...
  • Map的值传给另一个Map

    万次阅读 2019-04-07 09:20:26
    Map<String, Object> map1 = new HashMap<String, Object>(); map1.put(“object1”, object1); Map<String, Object> map2 = new HashMap<String, Object>(); map2.put(“object2”, object...
  • List splist=; List tmpList = new ArrayList(); Map> tmpMap =new HashMap(); tmpMap.put(1, splist); tmpList.add(tmpMap); c:foreach
  • python3 循环遍历map之后,map为空

    千次阅读 2018-10-17 15:24:46
    今天在跟敲书本代码的时候,发现map类型的变量经过次for循环遍历之后,里面的元素都没有了,找了一些资料,特此记录,以作备忘。 我们常常会写类似于这样的代码: dataSet = [[1,3,4],[2,3,5],[1,2,3,5],[2,5]]...
  • Java在循环中删除Map中的元素

    千次阅读 2018-09-04 09:57:19
    private static void clearYesterdayCachMap(){ ...Map.Entry&lt;String, List&lt;Object&gt;&gt;&gt; it = cachMap.entrySet().iterator();  while(it.hasNext()){  Map.En...
  • 今天在使用python map的过程中,发现了一个奇怪问题,map遍历完成后,再次访问map,发现map为空了,特记录下来,以备日后查看。如下代码,期望的结果是每次从外循环进入内循环map都从头开始进行遍历,但事实却不是...
  • Map循环4种方式

    千次阅读 2018-07-13 16:52:57
    遍历方式: Map&lt;String,String&gt; map = new HashMap&lt;String, String&gt;(); map.put("1","java"); map.put("2","c"); map.put("3",&...
  • ![图片说明]... temp是一组j'son字符串,现在想循环遍历其中的某个值并把其存入到js创建的新的map里边,但是我这么写最后map里边只是遍历map的最后一个
  • js中的forEach循环map循环

    千次阅读 2017-10-18 10:24:39
    在js中进行数组循环时经常会用到forEach方法和map方法,下面就来看一下这两种遍历方法的区别。 在编辑器中输入如下的代码: var array = [1,2,3,4,5]; var array1 = array.forEach(function(val){ console.log(...
  • map集合解决双重for循环的性能问题

    千次阅读 2018-12-20 20:46:35
    最近做了一个项目,做到权限管理模块时,需要展示权限树,在controller层需要使用双重循环解决权限的父子嵌套关系。 原始代码 @RequestMapping(&amp;amp;quot;/loadData&amp;amp;quot;) @ResponseBody ...
  • map循环删除操作

    千次阅读 2019-03-14 17:03:00
    1.错误示例 Map<String,... outCodes1 = outParamList.stream().collect(Collectors.toMap(InterfaceOutParam::getOutparamCode,a->a)); Map<String,InterfaceOutParam> outCodes2 = ...
  • Map循环遍历的五种方法

    千次阅读 2020-06-30 16:34:46
    1、创建一个Enum public enum FactoryStatus { BAD(0,"ou"), GOOD(1,"yeah"); private int status; private String description; FactoryStatus(int status, String description){ this.status=status;
  • Lambda表达式之循环map集合

    千次阅读 2020-01-06 11:41:58
    通常我们循环一个map集合会有三种方法(在jdk1.8之前) 链接如下: map循环三种方式 jdk1.8多了lambda表达式之后 我们可以更优雅的循环map集合,用最少最清晰的代码展现其内容 代码如下 HashMap<Integer,String>...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 425,424
精华内容 170,169
关键字:

怎么循环一个map