一个很奇怪的问题

先来看看我的一段代码:

1 ArrayList<Integer> array = new ArrayList<Integer>();
2
3 for(int i = 0;i<100;i++){
4     array.add(i);
5  }
6 for(int i=0;i<array.size();i++){
7 //     array.remove(new Integer(i));
8        array.remove(i);
9  }

你觉得这样能不能把array里面的东西都删除呢?

输出的结果是这样的:

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99

但是运行第7行代码的时候他的输出是这样的:

50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99

我开始还以为出什么问题了,后来才猛然想到,在ArrayList里面删除数据时会向前移动的,这是经常犯的一个错误,以后要小心。

而且我们知道如果想要removeArrayList里面的东西,如果在前面后面删除都没有关系,那么从后面开始删除可以减少移动的次数。

一个很奇怪的问题,布布扣,bubuko.com

时间: 2024-10-23 10:00:12

一个很奇怪的问题的相关文章

一个很奇怪的问题,程序没有改动加密参数应该也没有变化.但是两次的加密结果却不一致.md5加密问题

从图上我们看出20160803的加密结果是AAEBA9C578EA522215EAE76AFCAF250.时间是9.4分 现在我们再看这个同样的加密地址与时间结果却是另一种 31672B16....... 我想问的是为什么会造成这种后果呢,是md5的加密有问题呢还是 程序的不稳定性呢 ?

动态二维数组一个很奇怪的问题,内存泄露还是???

最近遇到的问题,具体如下: #include <iostream> using namespace std; typedef void(*P[10])(bool& flag); #define N 10000 #define M 10000 template<class T> void fun(bool& flag) { int i; static T** p=nullptr; switch (flag) { case false: p = (T**)new T*[

一个关于ExecutorService shutdownNow时很奇怪的现象

我们知道很多类库中的阻塞方法在抛出InterruptedException后会清除线程的中断状态(例如 sleep. 阻塞队列的take),但是今天却发现了一个特别奇怪的现象,先给出代码: public static void main(String[] args) throws InterruptedException { ExecutorService executor = Executors.newSingleThreadExecutor(); executor.execute(new R

遇到的一个很有趣的陷阱

今天在做ACM题的时候,遇到了一个问题,记下来,避免下次再遇到. 问题 问题很简单大概就是输入一段话,然后打印出里面包含了a-z的字母分别有多少个.贴出代码 package com.csdhsm.acm4; import java.util.HashMap; import java.util.Map; import java.util.Scanner; class NumberOfLetters{ private Map<Character, Integer> values; public N

优化器跟踪分析一个很怪异的现象

工作中遇到一则很奇怪的真实案例,有一个统计sql,统计结果在190-200之间时,耗时基本上维持在1.6S,统计结果在此数据范围外的统计耗时,基本上维持在0.1-0.3S之间, 按照惯例,explain查看执行计划. 为方便阐述,约定如下 : 数据范围在190-200,耗时1.6S的叫 sql1,数据范围不在此范围,耗时0.1-0.3S的叫sql2 sql1执行计划: sql2执行计划: 两条完全相同的sql就筛选条件中换了一个departid的值,sql1 191条记录,sql2 256条记录

一个很实用的前端框架Zui

杰哥给我推荐了一个很有用的前端框架-Zui,我看着觉得很神奇的,因为有很多我都不懂.在这里分享总结一下.首先,这是一个中国自己开发的框架,比起很多外国的框架来说,有很详细的API,而且是全中文的,不需要再经过其他人的翻译了.然后,它的内容十分丰富,很系统的分为了:基础,控件,组件,JS插件,视图几大块:而且使用起来,只需要导入js,在适当的地方加上正确的class类就可以了.对于,没有什么js基础的人,也是十分容易上手的.下面我就大体的介绍一下它的各个模块的功能.基础:基础里面我觉得很有用的主要

第一次作业:假装这里有一个很响亮的标题

---恢复内容开始--- 一.结缘计算机 缘分可以说是一个很奇妙的东西,喜欢一件事物往往从对它的美好幻想开始.相信许多人想到计算机都会将它与玩游戏联系在一起,对于我却不然,在我看来编程是一个创造的过程--这就是我对于计算机最初的美好幻想.试想通过编写一些代码便能够实现自己心中所想,这难道不是一件令人兴奋的事吗?它执行你的指令,完成你的任务,实现你的想法,这在当时是对我非常有吸引力的,于是我第一志愿便填报了计算机专业. 你认为你的条件如何?其实我并不知道这个问题应该如何回答,物质条件?素质方面?条

Go map中一个很重要的特性

先看一段代码: func main() { m := make(map[int]string) m[1] = "a" m[2] = "b" m[3] = "c" for k, v := range m { fmt.Println(k, v) } fmt.Println("-----------------") mm := make(map[int]string) mm[1] = "a" mm[2] = &q

UIViewAdditions(一个很方便使用的工具类吧)

我们在工程中,或多或少的要修改控件的坐标-宽度-高度,于是,经常性的见到大家self.view.frame.origin.x,self.view.frame.size.width.........相当的麻烦,在这里向大家推荐一个比较好的工具类,是UIView的类目,它里面对于求坐标,求高度什么的做了封装,很方便大家调用. @下载链接:点击这里 @.h #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interfa