相关疑难解决方法(0)

如何在Java中从另一个数组创建子数组?

如何从另一个数组创建一个子数组?是否有一个方法从第一个数组获取索引,如:

methodName(object array, int start, int end)
Run Code Online (Sandbox Code Playgroud)

我不想过去制作循环并让我的程序受损.

我一直收到错误:

找不到符号方法copyOfRange(int [],int,int)

这是我的代码:

import java.util.*;

public class testing 
{
    public static void main(String [] arg) 
    {   
        int[] src = new int[] {1, 2, 3, 4, 5}; 
        int b1[] = Arrays.copyOfRange(src, 0, 2);
    }
}
Run Code Online (Sandbox Code Playgroud)

java arrays

273
推荐指数
6
解决办法
36万
查看次数

在Java中获取数组的一部分而不在堆上创建新数组

我正在寻找一种返回数组片段的Java方法.一个例子是获取包含字节数组的第4和第5个字节的字节数组.我不想在堆内存中创建一个新的字节数组来做到这一点.现在我有以下代码:

doSomethingWithTwoBytes(byte[] twoByteArray);

void someMethod(byte[] bigArray)
{
      byte[] x = {bigArray[4], bigArray[5]};
      doSomethingWithTwoBytes(x);
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种方法可以做到doSomething(bigArray.getSubArray(4, 2))4是偏移量,2是长度,例如.

java arrays slice

180
推荐指数
11
解决办法
21万
查看次数

数组的Java副本部分

有没有一种方法可以复制数组的一部分(不是arraylist)并从中创建一个新数组?

Example:
[1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

并从中创建一个新数组:

[1,2,3]
Run Code Online (Sandbox Code Playgroud)

有没有一行/方法可以做到这一点?

java arrays copy java1.4

18
推荐指数
5
解决办法
4万
查看次数

Java不是垃圾收集内存

我正在读取一个非常大的文件,并从每一行中提取一小部分文本.但是在操作结束时,我的内存很少.在读取文件后,垃圾收集器似乎无法释放内存.

我的问题是:有没有办法释放这段记忆?或者这是一个JVM错误?

我创建了一个SSCCE来证明这一点.它读取1 mb(由于16位编码而在Java中为2 mb)文件并从每行中提取一个字符(~4000行,因此应该是大约8 kb).在测试结束时,仍然使用了完整的2 mb!

最初的内存使用情况:

Allocated: 93847.55 kb
Free: 93357.23 kb
Run Code Online (Sandbox Code Playgroud)

读取文件后立即(在任何手动垃圾收集之前):

Allocated: 93847.55 kb
Free: 77613.45 kb (~16mb used)
Run Code Online (Sandbox Code Playgroud)

这是预料之中的,因为程序正在使用大量资源来读取文件.

然而,我垃圾收集,但不是所有的内存都被释放:

Allocated: 93847.55 kb
Free: 91214.78 kb (~2 mb used! That's the entire file!)
Run Code Online (Sandbox Code Playgroud)

我知道手动调用垃圾收集器不会给你任何保证(在某些情况下它是懒惰的).然而,这发生在我的大型应用程序中,其中文件几乎占用了所有可用内存,并且导致程序的其余部分尽管需要它而耗尽内存.这个例子证实了我怀疑从文件中读取的多余数据没有被释放.

以下是生成测试的SSCCE:

import java.io.*;
import java.util.*;

public class Test {
    public static void main(String[] args) throws Throwable {
        Runtime rt = Runtime.getRuntime();

        double alloc = rt.totalMemory()/1000.0;
        double free = rt.freeMemory()/1000.0;

        System.out.printf("Allocated: %.2f kb\nFree: %.2f kb\n\n",alloc,free);

        Scanner in = new Scanner(new File("my_file.txt"));
        ArrayList<String> …
Run Code Online (Sandbox Code Playgroud)

java memory performance garbage-collection

12
推荐指数
2
解决办法
8741
查看次数

获取 Java 数组部分的视图

我指的是在 Java 中只获取数组的一部分?,它使用copyOfRange()方法。所以,我看了一眼这个方法的源代码。它将指定数组的指定范围复制到一个新数组中。我不想这样做。我想查看数组。

有没有办法得到这个?

java arrays

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

Java - 在步骤中切片任何数组

在python中,我们可以执行以下操作:

 array = [0,1,2,3,4,5,6,7,8,9,10]
 new_array= array[::3]
 print(new_array)
>>>[0,3,6,9]
Run Code Online (Sandbox Code Playgroud)

在Java中是否有相同的功能?我一直在寻找这种类型的阵列切片,但我没有运气.任何帮助都会很棒,谢谢!

java arrays arraylist slice

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

如何打印出数组索引 2-5

我正在创建一个涉及数组的程序,有一次我想打印出数组的一部分。我想知道如何打印出例如数组索引 2-5。

我尝试做这样的事情,但没有奏效。

String[] testArray = {"a", "b", "c", "d", "e", "f'", "g"};
System.out.println(testArray[2,5]);
Run Code Online (Sandbox Code Playgroud)

但它没有用。(并不是说我也完全预料到了)。

我只是想知道你会怎么做这样的事情。

java

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

从静态列表Java中选择前N个元素

我想从Java列表中选择前N个元素

String[] ligature = new String{there,is not,a,single,person,who,knows,the,answer};
Run Code Online (Sandbox Code Playgroud)

现在我要从中选择前5个元素。

Stiring[] selectedLigature = ligature[0:4];

我想这样做而不使用for循环。

java arrays

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