• Map遍历的几种方法


     Map.EntrySet 的用法

    package edu.smc.test; 

    import java.util.HashMap; 
    import java.util.Iterator; 
    import java.util.Map; 
    import java.util.Map.Entry; 

    public class TestEntrySet { 
      public static void main(String[] args) { 
        Map<String,String> map=new HashMap<String,String>(); 
        map.put("1", "张三"); 
        map.put("2", "李四"); 
        map.put("3", "王五");


        /*方法一 :迭代程序*/ 
        System.out.println("方法一:"); 
        Iterator iterator=map.entrySet().iterator(); 
        while(iterator.hasNext()){ 
          Map.Entry<String, String> entry= (Entry<String, String>) iterator.next(); 
          System.out.println("key:"+entry.getKey()+" value"+entry.getValue()); 
        } 
        /*方法二*/ 
        System.out.println("方法二:"); 
        for (Map.Entry<String, String> m : map.entrySet()) { 
          System.out.println("key:"+m.getKey()+" value"+m.getValue()); 
        } 
      } 

    package edu.smc.test;

    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Map.Entry;

    public class TestEntrySet {
      public static void main(String[] args) {
        Map<String,String> map=new HashMap<String,String>();
        map.put("1", "张三");
        map.put("2", "李四");
        map.put("3", "王五");
        /*方法一 :迭代程序*/
        System.out.println("方法一:");
        Iterator iterator=map.entrySet().iterator();
        while(iterator.hasNext()){ 
          Map.Entry<String, String> entry= (Entry<String, String>) iterator.next();
          System.out.println("key:"+entry.getKey()+" value"+entry.getValue()); 
        } 
        /*方法二*/
        System.out.println("方法二:");
        for (Map.Entry<String, String> m : map.entrySet()) {
          System.out.println("key:"+m.getKey()+" value"+m.getValue());
        } 
      }
    }
    结果:

    [html] view plaincopyprint?
    方法一: 
    key:3 value王五 
    key:2 value李四 
    key:1 value张三 
    方法二: 
    key:3 value王五 
    key:2 value李四 
    key:1 value张三

    一个完整的遍历速度测试:

    import java.util.Iterator;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.LinkedList;
     
    /**
     * IteratorTest
     * @author SageZk
     */
    public class IteratorTest {
     
        public static long testForloops(List<String> list) {
            long start = 0L, end = 0L;
            @SuppressWarnings("unused")
            String le = null;
            start = System.nanoTime();
            for (int i = list.size() - 1; i >= 0; --i) {
                le = list.get(i);
            }
            end = System.nanoTime();
            return end - start;
        }
     
        public static long testIterator(List<String> list) {
            long start = 0L, end = 0L;
            @SuppressWarnings("unused")
            String le = null;
            start = System.nanoTime();
            Iterator<String> it = list.iterator();
            while (it.hasNext()) {
                le = it.next();
            }
            end = System.nanoTime();
            return end - start;
        }
     
        public static void main(String[] args) {
            //测试列表长度
            final int LEN = 10000;
     
            //初始化测试用数据
            List<String> arraylist = new ArrayList<String>();
            List<String> linkedlist = new LinkedList<String>();
            for (int i = 0; i < LEN; ++i) {
                String s = Integer.toString(i, 2);
                arraylist.add(s);
                linkedlist.add(s);
            }
     
            //打印测试结果
            final String FORMAT = "%1$-16s%2$-16s%3$16d ";
            System.out.println("List Type Time(nanoseconds)");
            System.out.println("-------------------------------------------------");
            System.out.printf(FORMAT, "ArrayList""for", testForloops(arraylist));
            System.out.printf(FORMAT, "ArrayList""Iterator", testIterator(arraylist));
            System.out.printf(FORMAT, "LinkedList""for", testForloops(linkedlist));
            System.out.printf(FORMAT, "LinkedList""Iterator", testIterator(linkedlist));
        }
     
    }

    System.nanoTime()方法用来计时

    以下是 3 组测试结果:

    [code=BatchFile]List Type Time(nanoseconds)
    -------------------------------------------------
    ArrayList       for                      1189258
    ArrayList       Iterator                 2365594
    LinkedList      for                    152396254
    LinkedList      Iterator                 2340801

    List Type Time(nanoseconds)
    -------------------------------------------------
    ArrayList       for                      1235701
    ArrayList       Iterator                 4249982
    LinkedList      for                    149825606
    LinkedList      Iterator                 2525531

    List Type Time(nanoseconds)
    -------------------------------------------------
    ArrayList       for                      1198267
    ArrayList       Iterator                 2584617
    LinkedList      for                    150382451
    LinkedList      Iterator                 2347994
    [/code]

  • 相关阅读:
    mvn command is not recognized as an internal or external command
    mac搭建nginx和wordpress开发环境
    搭建nginx+php环境时遇到”file not found"的问题
    MAC下bash配置文件的加载顺序
    lsof的注意事项
    理解字符集、字符编码、ASCII、Unicode、UTF-8
    初学markdown有感
    AngularJS开发指南-Animations
    #正则表达式# 学习笔记
    vi学习笔记/基本操作方法
  • 原文地址:https://www.cnblogs.com/Jenny-sider/p/4512866.html
Copyright © 2020-2023  润新知