相关疑难解决方法(0)

4851
推荐指数
34
解决办法
67万
查看次数

在Java中键入List vs type ArrayList

(1) List<?> myList = new ArrayList<?>();

(2) ArrayList<?> myList = new ArrayList<?>();
Run Code Online (Sandbox Code Playgroud)

我理解,使用(1),可以交换List接口的实现.似乎(1)通常在应用程序中使用而不管需要(我自己总是使用它).

我想知道是否有人使用(2)?

此外,经常(并且我可以得到一个例子)情况实际上需要使用(1)over(2)(即where(2)不足以对接口最佳实践等进行编码)

java interface list decoupling

537
推荐指数
11
解决办法
39万
查看次数

如何向数组添加新元素?

我有以下代码:

String[] where;
where.append(ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1");
where.append(ContactsContract.Contacts.IN_VISIBLE_GROUP + "=1");
Run Code Online (Sandbox Code Playgroud)

这两个附件没有编译.这怎么会正常工作?

java arrays string

271
推荐指数
11
解决办法
117万
查看次数

性能中的数组与ArrayList

哪一个在Object类型的Array和Object类型的ArrayList之间的性能更好?

假设我们有一个Animal对象数组:Animal animal[] 和一个arraylist:ArrayList list<Animal>

现在我在做什么 animal[10] , list.get(10) 哪一个应该更快,为什么?

java arrays collections performance arraylist

57
推荐指数
5
解决办法
11万
查看次数

.clone()或Arrays.copyOf()?

为了减少可变性,我们应该使用

public void setValues(String[] newVals) {

     this.vals = ( newVals == null ? null : newVals.clone() );
}
Run Code Online (Sandbox Code Playgroud)

要么

public void setValues(String[] newVals) {

     this.vals = ( newVals == null ? null : Arrays.copyOf(newVals, newVals.length) );
}
Run Code Online (Sandbox Code Playgroud)

java immutability

41
推荐指数
2
解决办法
4万
查看次数

为什么Collections.addAll应该比c.addAll更快

Java的API文档说有关以下Collections.addAll

这种方便方法的行为与c.addAll(Arrays.asList(elements))的行为相同,但在大多数实现中,此方法可能运行得更快.

所以,如果我理解正确,a)比​​b)慢:

一个)

Collection<Integer> col = new ArrayList<Integer>();
col.addAll(Arrays.asList(1, 2, 3, 4, 5));
Run Code Online (Sandbox Code Playgroud)

b)

Collection<Integer> col = new ArrayList<Integer>();
// Collections.addAll(col, Arrays.asList(1, 2, 3, 4, 5)); <-- won't compile
Collections.addAll(col, 1, 2, 3, 4, 5);
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释,为什么会这样?

编辑:更正的代码示例.thx到polygenelubricants

java collections performance

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

什么时候绝对必要的通用数组 - 一个案例

这个Q是寻找一个绝对必要的泛型数组的示例.

泛型和数组"混合不好".

是否存在通用ArrayList不会执行的情况 - 通用数组没有替代品并且必须使用.

有效的Java为通用数组打开了一扇门,表示可能存在需要通用数组的情况.

我一直在使用ArrayList没有任何缺点,也不能想到这样的情况.

TIA.

注意:我见过这些:

以及其他一些讨论.

java arrays generics arraylist

25
推荐指数
2
解决办法
985
查看次数

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万
查看次数

阵列比arraylist更快吗?

我的直觉说阵列比arraylist更快,因为arraylists是使用在填充/丢失元素时调整大小的数组来实现的.

我只是想确认这是否属实,这意味着如果您知道要保留的元素数量,就没有理由使用arraylist.

java arrays performance arraylist

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

如何设置项目列表的默认值?

我正在尝试将一些python代码转换为java,并需要设置列表的默认值.我知道默认值,列表的大小,我的目标是设置一个默认值,然后在我的程序中更改它们.在python中我只是这样做(创建10个值为零的项目):

list = [0]*10  
Run Code Online (Sandbox Code Playgroud)

我想做:

List<Integer> list1 = Arrays.asList(0*10); // it just multiples 0 by 10.
Run Code Online (Sandbox Code Playgroud)

它做得很好,我知道我可以这样做:

for(int i = 0;i<10;i++)
{
  list1.add(0); 
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更好的方法(而不是for循环)?

java

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