你自己试过吗?明明是正确的代码。。 你说的正是我想问你的。 没试过我会这样说? 我试了明明是对元素0 100 200...的shuffle,哪里有你说的1 2 3 mind if you read my post again, very very carefully, and never never miss a single word?
好吧,我看你说的让你产生了歧义。 看下面代码吧: List<Integer> list = new LinkedList<Integer>(Arrays.asList(1,3,5,7,9)); System.out.println(list.remove(1)); System.out.println(list.remove(3)); System.out.println(list); 写代码的人的本意是想删除元素1,3 但实际删除的,却是元素3,9
但如果你是修改列表内容结构,比如从列表中间删除一个,那肯定是linkedlist快,
不过也有特例,删除最后一个元素,arraylist更快。
插入数据也一样,在中间或者开始插入数据linkedlist快,
但是如果在末尾插入,就要看具体情况了。
arraylist容量足够的情况下,arraylist快,否则linkedlist快。
arraylist的容量是动态扩展的,所以会批量的为将来在最后插入数据提供空间。
http://bbs.csdn.net/topics/390791738
因为LinkedList.get方法是出奇的慢的。但是,你这里还有个小bug。完全是因为你碰巧初始化了相同的内容,才没有最终出错list.remove(ran.nextInt(list.size()));对于List<Integer>来说,这个是尤其容易迷惑人的
你这个调用的是remove(int),是按照索引删除,而不是按照元素删除。你的列表初始化的时候
for(int index=0;index<num;index++){
list.add(index *100);
}
你再看看最后返回出来的结果,不是期望的0, 100, 200,而是0,1,2,3的乱序。
你说的正是我想问你的。
没试过我会这样说?
我试了明明是对元素0 100 200...的shuffle,哪里有你说的1 2 3
你说的正是我想问你的。
没试过我会这样说?
我试了明明是对元素0 100 200...的shuffle,哪里有你说的1 2 3
mind if you read my post again, very very carefully, and never never miss a single word?
看下面代码吧:
List<Integer> list = new LinkedList<Integer>(Arrays.asList(1,3,5,7,9));
System.out.println(list.remove(1));
System.out.println(list.remove(3));
System.out.println(list);
写代码的人的本意是想删除元素1,3
但实际删除的,却是元素3,9