本文属原创,转载请注明出处:http://www.cnblogs.com/robinjava77/p/5456085.html (Robin)

Map

 1 import java.util.HashMap;
 2 import java.util.Iterator;
 3 import java.util.Map;
 4
 5 /**
 6  * Created by robin on 2016/4/12.
 7  *
 8  * @author robin
 9  */
10 public class MapTest {
11
12     public static void main(String args[]){
13         traversalKey();
14     }
15
16     /**
17      * 在不知道map keys 的情况下 遍历map的key和value
18      *
19      * 总结
20      *  1.仅需要键(keys) map.keySet()
21      *  2.仅需要值(values) map.values()
22      *  3.使用的语言版本低于java 5,或是打算在遍历时删除entries,必须使用方法三
23      *  4.键值都要使用方法二。
24      */
25     public static void traversalKey(){
26         Map<String,String> map = new HashMap<String, String>();
27         map.put("1","a");
28         map.put("2","b");
29         map.put("3","c");
30         map.put("4","d");
31         map.put("5","e");
32         map.put("6","e");
33         /**第一种方法:keySet() 获取key值,通过key值get Value 效率最低!由key get value 耗时*/
34         for (String key:map.keySet()){
35             System.out.println("key:"+key+"--value:"+map.get(key));
36         }
37         /**第二种方法:Map.Entry 效率高于第一种,一般推荐这种写法*/
38         for(Map.Entry<String,String> entry:map.entrySet()){
39             System.out.println("key:"+entry.getKey()+"--value:"+entry.getValue());
40         }
41        /**第三种方法:Iterator遍历 这种遍历方法新旧java版本皆通用,在遍历删除map的key-value时,这是唯一可选择的方法*/
42         Iterator<Map.Entry<String, String>> entries = map.entrySet().iterator();
43         while (entries.hasNext()) {
44             Map.Entry<String, String> entry = entries.next();
45             System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
46         }
47         /**扩展 直接获取map的所有value值*/
48         for(String value:map.values()){
49             System.out.println(value);
50         }
51
52     }
53 }

List

  1 import java.util.ArrayList;
  2 import java.util.Iterator;
  3 import java.util.List;
  4
  5 /**
  6  * Created by robin on 2016/4/13.
  7  * 关于list遍历有三种办法:①普通方法;②增强for循环;③iterator
  8  * 效率 ①>③>②
  9  *
 10  * ①内部不锁定, 效率最高, 但是当写多线程时要考虑并发操作的问题
 11  * ②内部实现是使用了③
 12  * ③执行过程中会进行数据锁定, 性能稍差
 13  *
 14  * list遍历删除数据建议采用方法③,若采用方法①,请使用倒序遍历删除,详情参考:ordinaryDelDesc;
 15  * 不可使用②进行遍历删除,会产生bug
 16  * @author robin
 17  */
 18 public class ListTest {
 19
 20     public static void main(String args[]){
 21         List<Student> stuList = initList();
 22         /**
 23          * 普通遍历方法
 24          */
 25         for(int i= 0;i< stuList.size();i++){
 26             Student stuShow = stuList.get(i);
 27 //            System.out.println("stuId:"+stuShow.getStuId()+"----stuName:"+stuShow.getName());
 28         }
 29
 30         System.out.println("----普通遍历方法----");
 31
 32         /**
 33          * 增强for循环遍历
 34          */
 35         for (Student stu:stuList){
 36 //            System.out.println("stuId:"+stu.getStuId()+"----stuName:"+stu.getName());
 37         }
 38         System.out.println("----增强for循环遍历----");
 39         /**
 40          * Iterator 遍历
 41          */
 42         Iterator<Student> iterator = stuList.iterator();
 43         while (iterator.hasNext()){
 44             Student stuShow = iterator.next();
 45 //            System.out.println("stuId:"+stuShow.getStuId()+"----stuName:"+stuShow.getName());
 46         }
 47         System.out.println("----Iterator循环遍历----");
 48
 49         //list中删除元素方法
 50         ordinaryDelAsc(initList());
 51         System.out.println("----普通遍历正序删除----");
 52         ordinaryDelDesc(initList());
 53         System.out.println("----普通遍历倒序删除----");
 54 //        heighten(stuList);
 55         iteratorDel(initList());
 56         System.out.println("----Iterator循环遍历删除----");
 57     }
 58
 59     public static List<Student> initList(){
 60         List<Student> stuList = new ArrayList<Student>();
 61         Student stuA = new Student("10001","路飞");
 62         stuList.add(stuA);
 63         Student stuB = new Student("10002","索隆");
 64         stuList.add(stuB);
 65         Student stuC = new Student("10003","山治");
 66         stuList.add(stuC);
 67         Student stuD = new Student("10004","娜美");
 68         stuList.add(stuD);
 69         Student stuE = new Student("10005","罗宾");
 70         stuList.add(stuE);
 71         Student stuF = new Student("10006","乌索普--1号");
 72         stuList.add(stuF);
 73         Student stuJ = new Student("10007","弗兰奇");
 74         stuList.add(stuJ);
 75         Student stuH = new Student("10006","乌索普--2号");
 76         stuList.add(stuH);
 77         Student stuK = new Student("10008","乔巴");
 78         stuList.add(stuK);
 79         Student stuI = new Student("10006","乌索普--3号");
 80         stuList.add(stuI);
 81         Student stuM = new Student("10006","乌索普--4号");
 82         stuList.add(stuM);
 83         Student stuL = new Student("10009","布鲁克");
 84         stuList.add(stuL);
 85         return stuList;
 86     }
 87
 88     /**
 89      * 普通遍历方法 正序 删除预期数据
 90      * 这种方法存在bug:删除元素时涉及到数组元素的移动,遍历下标n的元素。
 91      * 当前元素符合条件,执行删除操作,当前n位置的元素被删除,n+1位置的元素,移动到n位置上。
 92      * 搜索光标却还是n,并未n-1,下次循环搜索时,会从下标n+1开始检索。
 93      * 此时n+1位置的元素,原本是n+2的元素,那么此次循环遍历检索就会遗漏n+1位置的元素检查。
 94      * 倘若n+1位置的元素符合删除条件,那么程序就将出现bug。
 95      * 因为建议多用iterator进行遍历删除,如果非得使用普通循环遍历方法删除元素,请采用倒序的办法,详见ordinaryDesc
 96      * @param stuList
 97      */
 98     public static void ordinaryDelAsc(List<Student> stuList){
 99         for(int i= 0;i< stuList.size();i++){
100             Student stuShow = stuList.get(i);
101             if(stuShow.getStuId().equals("10006")){
102                 stuList.remove(stuShow);
103             }
104         }
105         System.out.println(listToString(stuList));
106     }
107     /**
108      * 普通遍历方法 倒序 删除预期数据
109      * @param stuList
110      */
111     public static void ordinaryDelDesc(List<Student> stuList){
112         for(int i= stuList.size()-1;i>0 ;i--){
113             Student stuShow = stuList.get(i);
114             if(stuShow.getStuId().equals("10006")){
115                 stuList.remove(stuShow);
116             }
117         }
118         System.out.println(listToString(stuList));
119     }
120
121     /**
122      * 增强for循环遍历删除预期数据
123      * @param stuList
124      */
125     public static void heighten(List<Student> stuList){
126         for (Student stu:stuList){
127             if(stu.getStuId().equals("10006")){
128                 stuList.remove(stu);
129             }
130         }
131         System.out.println(listToString(stuList));
132     }
133
134     /**
135      * Iterator 循环遍历删除预期数据
136      * @param stuList
137      * @return
138      */
139     public static void iteratorDel(List<Student> stuList){
140         Iterator<Student> iterator = stuList.iterator();
141         while (iterator.hasNext()){
142             Student stuShow = iterator.next();
143             if(stuShow.getStuId().equals("10006")){
144                 iterator.remove();
145             }
146         }
147         System.out.println(listToString(stuList));
148     }
149
150     private static String listToString(List<Student> list){
151         StringBuilder sb = new StringBuilder("");
152         for (Student s:list){
153             sb.append("[stuId:"+s.getStuId()+"---name:"+s.getName()+"] \n");
154         }
155         return sb.toString();
156     }
157
158
159 }
160
161 class Student{
162
163     public Student(String stuId,String name){
164         this.stuId =stuId;
165         this.name = name;
166     }
167
168     private String stuId;
169
170     private String name;
171
172     public void setStuId(String stuId){
173         this.stuId = stuId;
174     }
175
176     public String getStuId(){
177         return  this.stuId;
178     }
179
180     public void setName(String name){
181         this.name = name;
182     }
183
184     public String getName(){
185         return this.name;
186     }
187 }

转载于:https://www.cnblogs.com/robinjava77/p/5456085.html

map和list遍历基础相关推荐

  1. [Java基础]Map集合的遍历

    Map集合是Java中非常常用的一个集合,通过Map集合可以实现对数据的快速检索和插入删除等操作:同样对Map集合的遍历也是十分重要的:如果你之前学过C++,那么对于Map的遍历操作可就不能像是C++ ...

  2. android Map集合的遍历

    今天,讲讲Set集合的遍历的使用. 1. Map集合的遍历之 键值对对象找 键和值: package cn.itcast_01;import java.util.HashMap; import jav ...

  3. 第三次学JAVA再学不好就吃翔(part92)--Map集合的遍历

    学习笔记,仅供参考,有错必纠 Map集合的遍历 方法1(利用键找值) 由于Map集合中没有iterator方法,所以如果我们想要遍历Map,则需要先提取出键,拿到Set集合,再利用Set集合的iter ...

  4. Map集合的遍历方法

    2019独角兽企业重金招聘Python工程师标准>>> Map集合的遍历方法  一.通过Map.Keyset遍历key和value,普遍使用,二次取值 //定义一个Map集合 Map ...

  5. 增强型for循环与Map集合的遍历

    Map接口的遍历有以下几种方法: 使用map.values()方法,先把value的值都放在一个Collection集合中. 使用map.entrySet()方法. 使用map.keySet()方法. ...

  6. java遍历一个map集合_Java遍历Map集合的四种方式

    Map 集合的遍历与 List 和 Set 集合不同.Map 有两组值,因此遍历时可以只遍历值的集合,也可以只遍历键的集合,也可以同时遍历.Map 以及实现 Map 的接口类(如 HashMap.Tr ...

  7. Map集合及遍历 debug用法 以及集合的斗地主应用练习 D190326

    Map集合及遍历 debug用法 以及集合的斗地主应用练习 第一个独立应用:斗地主,分步骤一点点把项目拆分每一步去完成. 01_第一章:回顾_三种集合的存储方式: 02_第一章:Map集合_常用方法: ...

  8. Java实现List,Map,Set 遍历的多种方式

    目录 一.简介 二.List的遍历方式 2.1.List常见初始化 2.2.普通for循环 2.3.增强for循环(推荐) 2.4.集合类通用遍历 2.5.lambda表达式forEach方法 2.6 ...

  9. 【java】Map集合的遍历方式有几种?

    因为下一个博客想写Hashtable集合下的一个子类Properties集合,但是Map集合的遍历方式又有点遗忘了........... 下面通过API来复习一下: 文章目录 1. Map集合的第一种 ...

最新文章

  1. Web前端培训面试攻略
  2. 骁龙855在AI性能上真的秒杀麒麟980?噱头而已
  3. window.opener方法的使用 js跨域
  4. OSI参考模型与TCP/IP协议的比较研究
  5. python 冷门_Python最冷门的模块
  6. CALL注入--扫雷辅助(二)
  7. Deep Learning(深度学习)学习笔记整理(二)
  8. spring学习(10):创建项目(自动装配)
  9. 获取场景中指定类的实例
  10. LeetCode 16. 最接近的三数之和(固定左端+滑动窗口)
  11. zabbix系统日志文件监控key
  12. 最实用的清理IE命令 ClearMyTracksByProcess
  13. 分布式tensorflow测试代码
  14. Firefox浏览器版本66的下载链接
  15. 自动判卷 、答题卡识别、六级答题卡客观题自动判卷系统1.0
  16. Unity使用反射探头实现地面的镜面反射
  17. 大数据各岗位薪资多少?一张图告诉你答案
  18. 技术干货 | AlphaFold/ RoseTTAFold开源复现(1)—推理复现
  19. 新手初学iPhone开发的路线图
  20. 大咖 | 从Ian Goodfellow到Yann LeCun,对话Quora AI大佬TOP 10

热门文章

  1. java+mysql性能优化_Java培训实战教程之mysql优化
  2. 可持久化-可持久化字典树
  3. py获取前端的参数_微前端 qiankun 项目实践
  4. c语言运算符类型转换,C语言中强制类型转换运算符的独特作用
  5. java数组求和递归,js数组去重 数组拼接 替换数组中的指定值 递归数组 判断数组中是否存在指定值 数组求和 根据条件判数组值...
  6. 高亮屏幕一条条线_惠普Z24N G2显示器评测 设计师都想要的好屏幕
  7. python代码加密cython_利用Cython对python代码进行加密
  8. linux进程管理fork,Linux -- 进程管理之 fork() 函数
  9. 3算法全称_全网最通俗的KMP算法图解
  10. python3.5安装教程linux_linux安装python3.5