package cc.knms.appservice.test;

 import java.text.ParseException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; public class Test {
/**
* @autho 方华哥哥
* @remark 关于list 性能 ,删除其中的元素测试
* //附带说下这三个循环的性能
* @date 2016年12月21日 下午1:48:33
* @param
* @return
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {
// 循环中 删除元素测试
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e"); for (int i = 0; i < list.size(); i++) {
if (list.get(i).equals("b")) {
list.remove(i);
}
System.out.println(list.get(i));
System.out.println(list + "--");
}
//性能:内部不锁定,效率最高,但是当写多线程时要考虑并发操作的问题
/* 内部不锁定也是其缺点,这样会导致循环当中删除某个元素可能会出现不必要的问题
* 通过结果我们可以看到,在基本的for循环中 我们也能正常的删除元素,但是这里的指针会向前移动. a b-- c c-- d c-- e
* c--
*/ for (String string : list) {
if (string.equals("b")) {
list.remove(string);
}
System.out.println(string);
}
// 性能:当遍历集合或数组时,如果需要访问集合或数组的下标,
// 那么最好使用旧式的方式来实现循环或遍历,而不要使用增强的for循环,因为它丢失了下标信息其实 /*
* 在增强for循环中删除元素我们可以看到直接报错 aException in thread "main" b
* java.util.ConcurrentModificationException
*/ Iterator<String> it = list.iterator();
while (it.hasNext()) {
if (it.next().equals("b")) {
it.remove();
}
System.out.println(list);
}
//性能:执行过程中会进行数据锁定,性能稍差,但是同时,如果你想在循环过程中去掉某个元素,为了避免不必要的问尽量使用it.remove方法;
/*
* Iterator 也能正常的删除,在循环中需要删除数据,然后在获取某个值的时候建议用Iterator,
* 如果用基本的for循环的时候,可能得出的值会错乱,for循环每删除一个元素,指针会像前移动,如果通过get去获取值的时候可能不是自己想要的
* Iterator 则不会
* [a, b, c, d, e] [a, c, d, e] [a, c, d, e] [a,
* c, d, e] [a, c, d, e]
*/
} }

java 三个循环的优缺点的更多相关文章

  1. java 三种循环及注意事项

    package debug; public class Demo8 { public static void main(String[] args) { //采用for循环打印10次Java好 for ...

  2. 【Java学习笔记之六】java三种循环(for,while,do......while)的使用方法及区别

    第一种:for循环 循环结构for语句的格式:       for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体;    } eg: class Dome_For2{ public st ...

  3. java三线程循环有序打印ABC

    迅雷笔试题: 编写一个程序,开启3个线程,这3个线程的ID分别为A.B.C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示:如:ABCABC….依次递推. 解决思路:每个线 ...

  4. Java的三种循环:1、for循环 2、while循环 3、do...while循环

    Java的三种循环 Java三种循环结构: 1.for循环 2.while循环 3.do...while循环 循环结构组成部分:1.条件初始化语句,2.条件判断语句 , 3.循环体语句,4.条件控制语 ...

  5. java基础三种循环的使用及区别

    摘要:Java新人初学时自己的一些理解,大神们路过勿喷,有什么说的不对不足的地方希望能给予指点指点,如果觉得可以的话,希望可以点一个赞,嘿嘿,在这里先谢了.在这里我主要说的是初学时用到的Java三个循 ...

  6. Java语言----三种循环语句的区别

    ------- android培训.java培训.期待与您交流! ---------- 第一种:for循环 循环结构for语句的格式:       for(初始化表达式;条件表达式;循环后的操作表达式 ...

  7. java基础3_循环语句,数组

    java中的循环: Java中提供了3中循环结构:  while  do-while  for ① 循环结构的作用? 可以不断重复执行循环结构中的代码: ② 上面的3个循环结构功能都是一样的,只是结构 ...

  8. qlserver、Mysql、Oracle三种数据库的优缺点总结

    这篇文章主要介绍了sqlserver.Mysql.Oracle三种数据库的优缺点总结,需要的朋友可以参考下   一.sqlserver优点:易用性.适合分布式组织的可伸缩性.用于决策支持的数据仓库功能 ...

  9. java中for循环的6种写法

    有些写法上的说明写的过于武断,可能有很多不当之处,仅供参考.   package ForLoop; import java.util.ArrayList; import java.util.Itera ...

随机推荐

  1. listview指定某item的点击效果

    需求:listview的某些item能够点击,需要点击效果,有些item不能点击,需要屏蔽点击效果. 实现: 1.layout: <ListView android:id="@+id/ ...

  2. java常用基础知识点 (持续追加)

    作为一个Java编程人,会经常用上JDK中的大量的API类库,常用的有字符串操作.集合操作.文本操作.输入输出操作.以及网络操作, 常用的包: 1. java.lang Java程序的基础类,字符串, ...

  3. TCP Socket 通讯(客户端与服务端)

    /*----------------------------编译环境:VS2015---------------------------------------*/ /*--------------- ...

  4. javamail 发送附件

    1.属性文件 mail.protocol=smtpmail.host=mail.port=mail.auth=truemail.timeout=25000mail.username=mail.pass ...

  5. 看的oracle数据库视频 记的一点笔记

    3个默认的用户    sys          //网络管理员  权限由上到下降低 [最后加上 as sysdba]    system  //本地管理员    scott     //普通用户  默 ...

  6. StoryBoard解惑

    可以把StoryBoard看做是一组viewController对应的xib,以及它们之间的转换方式的集合.在StoryBoard中不仅可以看到 每个ViewController的布局样式,也可以明确 ...

  7. 关于HttpURLConnection.setFollowRedirects

    public static void HttpURLConnection.setFollowRedirects(boolean followRedirects)public void HttpURLC ...

  8. ListView.post(Runnable {})和ListView.postDelayed

    1. boolean android.view.View.post(Runnable action): 是listview 继承 view,同样具有此方法 post(Runnable action) ...

  9. UML学习---交互

    在系统中,对象都不是孤立存在的,它们相互之间通过传递消息进行交互.交互是一种行为,由语境中的一组对象为达到某一目的而交换的一组消息构成.

  10. android基础(六)android的消息处理机制

    Android中的消息处理机制由四个部分组成:Message.Handler.MessageQueue和Looper,并且MessageQueue封装在Looper中,我们一般不直接与MQ打交道. 一 ...