相关疑难解决方法(0)

Java中的数组或列表.哪个更快?

我必须在内存中保留数千个字符串,以便在Java中以串行方式访问.我应该将它们存储在数组中还是应该使用某种List?

由于数组将所有数据保存在连续的内存块中(与Lists不同),使用数组存储数千个字符串会导致问题吗?

java arrays performance list

339
推荐指数
15
解决办法
25万
查看次数

在数组上调用clone()是否也克隆其内容?

如果我clone()在类型A的对象数组上调用方法,它将如何克隆其元素?该副本是否会引用相同的对象?或者它会(element of type A).clone()为每个人打电话吗?

java clone

91
推荐指数
4
解决办法
10万
查看次数

从一个阵列复制到另一个阵列的最佳方法

当我运行以下代码时,没有任何东西被复制 - 我做错了什么?

另外,这是将数据从一个数组复制到另一个数组的最佳/最有效的方法吗?

public class A {
    public static void main(String args[]) {
        int a[] = { 1, 2, 3, 4, 5, 6 };
        int b[] = new int[a.length];

        for (int i = 0; i < a.length; i++) {
            a[i] = b[i];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java arrays arraycopy

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

没有实现可克隆接口的对象克隆

克隆对象我需要实现'可克隆'接口.因为这里我的类是一个jar文件(我的意思是API).所以我无法编辑课程.我听说所有类都扩展了基础对象类,这个对象类实现了可克隆的接口.这是否意味着我们可以直接克隆对象而不实现接口.如果是这样,在我的日食中,我没有任何克隆对象的选择.有没有其他方法克隆对象而不实现可克隆的接口.请解释.

java clone

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

在java中按值复制数组

我试图制作一个数组的独立副本,但无法获得一个.看到我无法使用for循环将整数复制整数,因为效率原因.还有其他方法吗?这是我的代码:

int[] temp = new int[arr.length]; 
temp = arr; 
Run Code Online (Sandbox Code Playgroud)

java

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

System.arrayCopy很慢

我一直在尝试测量System.arrayCopy与Arrays.copyOf的性能,以便正确选择其中一个.仅仅为了基准测试我也添加了手动副本,结果让我感到惊讶.显然我错过了一些非常重要的东西,请你,告诉我,它是什么?实现如下(参见前4种方法).

public class ArrayCopy {

    public static int[] createArray( int size ) {
        int[] array = new int[size];
        Random r = new Random();
        for ( int i = 0; i < size; i++ ) {
            array[i] = r.nextInt();
        }
        return array;
    }

    public static int[] copyByArraysCopyOf( int[] array, int size ) {
        return Arrays.copyOf( array, array.length + size );
    }

    public static int[] copyByEnlarge( int[] array, int size ) {
        return enlarge( array, size );
    }

    public static int[] copyManually( …
Run Code Online (Sandbox Code Playgroud)

java performance arraycopy

9
推荐指数
2
解决办法
2992
查看次数

Java:复制非基本类型的数组

在Java中复制非原始类型数组的首选方法是什么?性能问题怎么样?

java arrays copy

8
推荐指数
2
解决办法
5189
查看次数

"原子"更新整个阵列

我有一个编写器线程和单个读取器线程来更新和处理数组池(存储在map中的引用).写入与读取的比率几乎为5:1(写入延迟是一个问题).

编写器线程需要根据某些事件更新池中数组的少数元素.整个写操作(所有元素)都需要是原子的.

我想确保读者线程读取先前更新的数组,如果编写器线程正在更新它(类似于易失性但在整个数组而不是单个字段).基本上,我可以负担得起读取陈旧的值,但不能阻止.

此外,由于写入非常频繁,因此在读/写时创建新对象或锁定整个数组会非常昂贵.

是否有更高效的数据结构可以使用或使用更便宜的锁?

java concurrency performance locking data-structures

8
推荐指数
1
解决办法
655
查看次数

在Java中复制double []的最快方法是什么?

简单的问题,在Java中复制双精度数组的最快方法是什么.我目前这样做......

public static double[] clone_doubles(double[] from)
{
    double[] to = new double[from.length];
    for (int i = 0; i < from.length; i++) to[i] = from[i];
    return to;
}
Run Code Online (Sandbox Code Playgroud)

它也进行分配以避免溢出,但如果有更快的方法我将分配与副本分开.

我看过了Arrays.copyOf(),System.arraycopy()但我想知道是否有人有任何巧妙的技巧.

编辑: 如何复制double[][]

java

7
推荐指数
2
解决办法
4934
查看次数

安全性 - 数组直接存储

我甚至提到:声纳违规:安全 - 数组直接存储

我的代码是--->

    public final void setSelectedObjectsList(final ScheduleDTO[] selectedObjectsList) 
               //      Security - Array is stored directly    
               //The user-supplied array 'selectedObjectsList' is stored directly.      
{
            if (selectedObjectsList != null) {
                this.selectedObjectsList = selectedObjectsList.clone();
            } else {
                this.selectedObjectsList = null;
            }
        }
Run Code Online (Sandbox Code Playgroud)

这已经在处理防御性复制,为什么声纳会在功能参数上对我大吼大叫.

这不像Sonar Violation那样重复 :安全 - 数组直接存储

再次,谢谢你的呐喊和时间.

java findbugs sonarqube

4
推荐指数
1
解决办法
9506
查看次数