标签: arraylist

Java性能 - 用于大量快速读取的ArrayLists与Arrays

我有一个程序,我需要在尽可能短的时间内(以毫秒为单位)对类似List的对象进行100,000到1,000,000次随机读取读取,以实现类似细胞自动机的程序.我认为我正在使用的更新算法已经过优化(有效跟踪活动单元等).列表确实需要改变大小,但性能并不重要.所以我想知道使用Arrays而不是ArrayLists的性能是否足以在如此短的时间内处理那么多读取时产生差异.目前,我正在使用ArrayLists.

编辑:我忘了提到:我只是存储整数,所以另一个因素是使用Integer包装类(在ArrayLists的情况下)与int(在数组的情况下).有没有人知道使用ArrayList实际上是否需要3个指针查找(一个用于ArrayList,一个用于底层数组,一个用于Integer-> int),因为数组只需要1(数组地址+偏移到特定的INT)?HotSpot会优化额外的外观吗?这些额外的观察有多重要?

Edit2:另外,我忘了提到我还需要进行随机访问写入(写入,而不是插入).

java arrays performance arraylist

14
推荐指数
2
解决办法
3万
查看次数

Java:安全地类推一个ArrayList的克隆?

我想用这段代码克隆我的arraylist:

ArrayList<String> _names;

ArrayList<String> names = (ArrayList<String>) _names.clone();
Run Code Online (Sandbox Code Playgroud)

据我所知,没什么特别的.但是,我的编译器发出以下警告:

类型安全:未选中从Object转换为ArrayList <String>

有人知道一个更清洁的解决方案,不会给我一个警告吗?

java casting clone arraylist

14
推荐指数
1
解决办法
5519
查看次数

试图在java中查找Arraylist中出现的所有对象

我在Java中有一个ArrayList,我需要在其中查找所有出现的特定对象.方法ArrayList.indexOf(Object)只找到一个匹配项,所以我似乎需要其他东西.

java arraylist indexof

14
推荐指数
2
解决办法
3万
查看次数

ArrayList <> vs ArrayList <Integer>

ArrayList的以下两个声明有什么区别?

ArrayList<Integer> nunbers = new ArrayList<Integer>();
Run Code Online (Sandbox Code Playgroud)

VS

ArrayList<Integer> nunbers = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

他们中的一个比另一个更受欢迎吗?

java arraylist java-7

14
推荐指数
1
解决办法
1256
查看次数

Java - 如何访问另一个类的ArrayList?

你好,我是Java的初学者,这是我的问题:我的第一堂课有以下变量:

import java.util.ArrayList;

public class numbers {
    private int number1 = 50;
    private int number2 = 100;
}
Run Code Online (Sandbox Code Playgroud)

我也有这门课:

import java.util.ArrayList;

public class test {
    private numbers number;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:我想将number1和number2变量存储到ArrayList中,然后从类test中访问这个ArrayList.我怎样才能做到这一点?

java arraylist

14
推荐指数
1
解决办法
10万
查看次数

Java中的"new Foo(){}"与"new Foo()"

例如:

Object o1 = new ArrayList<String>();
Object o2 = new ArrayList<String>(){};
Object o3 = new ArrayList<String>(){{}};
Run Code Online (Sandbox Code Playgroud)

有什么不同?

我不能谷歌java的第2 /第3语法,任何参考?

java arraylist

14
推荐指数
2
解决办法
1058
查看次数

哪一个运行得更快,ArrayList或LinkedList?

List li = new LinkedList();

for (int i = 0; i &lt; 100; i++) {
    li.add(i);
}

long start1 = System.nanoTime();
li.get(57);

long end1 = System.nanoTime();
long diff1 = end1-start1;

System.out.println("Time taken by LinkedList = "+diff1);

List al = new ArrayList();
for (int i = 0; i < 100; i++) {
    al.add(i);
}
Run Code Online (Sandbox Code Playgroud)

我在两个列表上执行的操作,当我打印出所用的时间时,ArrayList总是比LinkedList运行得更快.有人可以解释哪个时间表现更好吗?如果代码中有问题,请告诉我.谢谢!

java collections performance linked-list arraylist

14
推荐指数
1
解决办法
3万
查看次数

为什么List.Add(E)返回布尔值而List.Add(int,E)返回void?

看看javadoc我看到一个ArrayList有一个重载的add方法:

public boolean add(E e)

将指定的元素追加到此列表的末尾.

和

public void add(int index,E element)

将指定元素插入此列表中的指定位置.将当前位于该位置的元素(如果有)和任何后续元素向右移动(向其索引添加一个元素).

我注意到第一个返回了一段boolean时间,第二个是a void.事实证明,第一个addHAS返回一个boolean因为:

返回:true(由Collection.add(E)指定)

所以我去了Collection.add(E):

布尔加法(E e)

确保此集合包含指定的元素(可选操作).如果此集合因调用而更改,则返回true.(如果此集合不允许重复并且已包含指定的元素,则返回false.)

所以我的问题是,为什么add指定返回boolean而不是void?当我想要的add东西,我希望只做一个操作.

据我所知,还有其他数据结构,与ArrayList相反,不允许重复(例如集合).但即使这样,问题也不可能按照以下方式解决:

public void add(E e){
    if(e is not in set){
        add e;
    }
}
Run Code Online (Sandbox Code Playgroud)

这样,如果e集合中的IS没有采取行动.为什么返回a boolean而不是void方法更好?

java collections arraylist

14
推荐指数
1
解决办法
2万
查看次数

为什么ArrayList的最大数组大小是Integer.MAX_VALUE - 8?

我正在研究Java 8文档ArrayList.我得到的最大数组大小定义为Integer.MAX_VALUE - 8平均值2 ^ 31 - 8 = 2 147 483 639.然后,我的重点是,为什么8减去或why not less than 8或more than 8减去?

/**
 * The maximum size of array to allocate.
 * Some VMs reserve some header words in an array.
 * Attempts to allocate larger arrays may result in
 * OutOfMemoryError: Requested array size exceeds VM limit
 */
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
Run Code Online (Sandbox Code Playgroud)

我得到了一些相关的答案,但没有实现我的目标.

  1. Java数组是否具有最大大小?
  2. 列表最多可以容纳多少数据
  3. 为什么我无法创建大尺寸的数组?

有些人根据文档给出了一些逻辑"Some …

java arrays arraylist

14
推荐指数
2
解决办法
3342
查看次数

长数组列表渲染使Angular.js中的页面滚动速度变慢

当尝试从一个数组(带图像)渲染超过120个项目时,列表的滚动变慢.基本上,当我在无限滚动中加载新数据时,我将旧数组数据与新数组数据连接起来.

另一方面,像dribbble,behance这样的热门网站似乎没有这个问题.也许这个问题特定于Angular.js?有人在他们的项目中遇到过这个问题吗?

javascript arrays arraylist angularjs angularjs-ng-repeat

13
推荐指数
2
解决办法
2473
查看次数