博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java集合01----ArrayList的遍历方式及应用
阅读量:5833 次
发布时间:2019-06-18

本文共 6414 字,大约阅读时间需要 21 分钟。

                                             Java集合01----ArrayList的遍历方式及应用

      前面已经学习了ArrayList的源代码,为了学以致用,故列举一些ArrayList的遍历方式及应用。

1.ArrayList的遍历方式

a.一般for循环(随机訪问)

Integer value = null;int size = list.size();for (int i=0; i

b.增强型for循环(for-each)

Integer value = null;for (Integer intvalue:list) {    value = intvalue;}

c.迭代器

Integer value = null;Iterator iter = list.iterator();while (iter.hasNext()) {    value = (Integer)iter.next();}
ArrayList三种遍历方式效率分析:

package com.sheepmu;import java.util.*;/* * @author SheepMu */public class MyTest {    public static void main(String[] args)     {        List
list = new ArrayList
(); for (int i=0; i<1000000; i++) list.add(i); byCommonFor(list) ; byForEach(list) ; byIterator(list) ; } public static void byCommonFor(List
list) { long startTime; long endTime; startTime = System.currentTimeMillis(); for (int i=0; i
" + totalTime +" ms"); } public static void byForEach(List
list) { long startTime; long endTime; startTime = System.currentTimeMillis(); for(Integer intvalue:list) ; endTime = System.currentTimeMillis(); long totalTime = endTime - startTime; System.out.println("ByFor-Each------>" + totalTime +" ms"); } public static void byIterator(List
list) { long startTime; long endTime; startTime = System.currentTimeMillis(); for(Iterator iter = list.iterator(); iter.hasNext(); ) { iter.next() ; } endTime = System.currentTimeMillis(); long totalTime = endTime - startTime; System.out.println("byIterator------>" + totalTime +" ms"); } }

byCommonFor------>6   ms

ByFor-Each------>14   ms
byIterator------>10   ms

由此可见:遍历时随机訪问的效率是最高的。

可是个人还是推荐使用for-each来进行遍历,也是我最喜欢的遍历方式。

由于:foreach代码简洁美观,还有就是相对于下标循环而言的,foreach不必关心下标初始值和终止值及越界等,所以不易出错。 

2.ArrayList的应用样例

  a.ArrayList经常用法举例

package com.sheepmu;import java.util.ArrayList;import java.util.List;/*  * @author SheepMu  */public class ArrayListTest {    public static void main(String[] args) {            List
list = new ArrayList
(); //使用泛型 创建ArrayList list.add("A");//向ArrayList中加入元素 list.add("B"); list.add("C"); list.add("D"); System.out.println("list-----> "+ list); list.add(0, "E"); // 加入到最前面后其它后移 System.out.println("加入E后的list-----> "+ list); System.out.println("第一个元素-----> "+ list.get(0)); // 获取第1个元素 list.remove("C"); // 删除“C”,后面的会前移 System.out.println("删除C后的list-----> "+ list); System.out.println("Arraylist的大小----> "+ list.size()); // 获取ArrayList的大小 list.set(1, "X"); // 设置第2个元素为X System.out.println("设置X后的list-----> "+ list); for(String s:list ) {//用for-each遍历 System.out.println("ArrayList中的每一个元素---> "+s); } list.clear(); // 清空ArrayList System.out.println("ArrayList是否为空----> "+ list.isEmpty()); // 推断ArrayList是否为空 }}
list-----> [A, B, C, D]
加入E后的list-----> [E, A, B, C, D]
第一个元素-----> E
删除C后的list-----> [E, A, B, D]
Arraylist的大小----> 4
设置X后的list-----> [E, X, B, D]
ArrayList中的每一个元素---> E
ArrayList中的每一个元素---> X
ArrayList中的每一个元素---> B
ArrayList中的每一个元素---> D
ArrayList是否为空----> true

b.ArrayList的应用样例

eg1:输入一个表达式,没有括号。数字小于0-9之间。输出计算结果,全部的中间结果化为整形。 比如:  输入:3+8×2/9-2  输出:2 

详见:第二题

package com.sheepmu;    import java.util.ArrayList;  import java.util.List;    /****  *输入一个表达式。没有括号,数字小于0-9之间,输出计算结果,全部的中间结果化为整形。       比如:  输入:3+8×2/9-2               输出:2         函数原型  . public int getMyRet(String str)    * @author sheepmu  *  */  public class ArrayListTest {       public static void main(String[] args){           String s="3+8×2/9-2 ";           int result=getMyRet(s);           System.out.println("最后结果:"+result);       }       public static int getMyRet(String s1 ){           int len=s1.length();            List
list=new ArrayList
(); for(int i=0;i
"+ list);//list--->[3, +, 8, ×, 2, /, 9, -, 2, ] for(int j=0;j

list.remove(j);//删除x list.remove(j);//删除9 System.out.println("list--x后->"+ list);//list--x后->[3, +, 16, /, 9, -, 2, ] j--;//相当于这次循环木有跳动下一个下标,由于立即要对ji參与运算,而不是跳过 } else if(list.get(j).equals("/")){ int shang=Integer.parseInt(list.get(j-1))/Integer.parseInt(list.get(j+1)); list.add(j-1,shang+""); list.remove(j); list.remove(j); list.remove(j); System.out.println("list--/后->"+ list);//list--/后->[3, +, 1, -, 2, ] j--; } } for(int k=0;k<list.size();k++){//这个时候是新的size if(list.get(k).equals("+")){ int he=Integer.parseInt(list.get(k-1))+Integer.parseInt(list.get(k+1)); list.add(k-1,he+""); list.remove(k); list.remove(k); list.remove(k); System.out.println("list--+后->"+ list); //list--+后->[4, -, 2, ] k--; } if(list.get(k).equals("-")){ int cha=Integer.parseInt(list.get(k-1))-Integer.parseInt(list.get(k+1)); list.add(k-1,cha+""); list.remove(k); list.remove(k); list.remove(k); System.out.println("list-- -后->"+ list); //list-- -后->[2, ] k--; } } int sum=Integer.parseInt(list.get(0)); return sum; } }

list--->[3, +, 8, ×, 2, /, 9, -, 2,  ]
list--x后->[3, +, 16, /, 9, -, 2,  ]
list--/后->[3, +, 1, -, 2,  ]
list--+后->[4, -, 2,  ]
list--  -后->[2,  ]
最后结果:2

eg2:加密后的QQ号为“6 3 1 75 8 9 2 4”,如今依照下面规则解密,规则是这种:首先将第1个数删除。紧接着将第2个数放到这串数的末尾,再将第3个数删除并将第4个数再放到这串数的末尾。再将第5个数删除……直到剩下最后一个数,将最后一个数也删除。依照刚才删除的顺序。把这些删除的数连在一起就是原始QQ号啦。解密后的号码为615947283

package com.sheepmu;    import java.util.ArrayList;  import java.util.List;    /****  * @author sheepmu   */  public class ArrayListTest {       public static void main(String[] args){           List
list0=new ArrayList
(); List
list1=new ArrayList
(); list0.add(6); list0.add(3); list0.add(1); list0.add(7); list0.add(5); list0.add(8); list0.add(9); list0.add(2); list0.add(4); while(list0.size()>0){ if(list0.size()==1){//注意仅仅剩一个时的特殊情况,仅仅把它放到原始号码中,已经没有元素再加入到末尾了。 list1.add(list0.remove(0)); } else{ list1.add(list0.remove(0)); list0.add(list0.remove(0)); } } System.out.println(list1); } }
[6, 1, 5, 9, 4, 7, 2, 8, 3]

转载于:https://www.cnblogs.com/yutingliuyl/p/6791882.html

你可能感兴趣的文章
Linux下ps命令详解
查看>>
numpy+pandas 基础学习
查看>>
数据类与生成数据库表所需组成
查看>>
2017普及组第三题 洛谷P3957 跳房子(解题报告)
查看>>
mysql 权限管理
查看>>
TSS 内核栈 用户栈的关系
查看>>
【kd-tree】bzoj4066 简单题
查看>>
logistic regression
查看>>
【动态规划】【记忆化搜索】CODEVS 3415 最小和 CodeVS原创
查看>>
MySQL高阶语法
查看>>
Spring CommonsMultipartResolver 上传文件
查看>>
为什么 Objective-C 很难
查看>>
【算法专题】仙人掌图问题
查看>>
httpClient
查看>>
对象序列化
查看>>
暑假周报告(第五周)
查看>>
C# DES加密解密类分享
查看>>
bitnami下webmin安装
查看>>
什么是viewport,为什么需要viewport
查看>>
Team Name
查看>>