如何从另一个数组创建一个子数组?是否有一个方法从第一个数组获取索引,如:
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方法.一个例子是获取包含字节数组的第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是长度,例如.
有没有一种方法可以复制数组的一部分(不是arraylist)并从中创建一个新数组?
Example:
[1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)
并从中创建一个新数组:
[1,2,3]
Run Code Online (Sandbox Code Playgroud)
有没有一行/方法可以做到这一点?
我正在读取一个非常大的文件,并从每一行中提取一小部分文本.但是在操作结束时,我的内存很少.在读取文件后,垃圾收集器似乎无法释放内存.
我的问题是:有没有办法释放这段记忆?或者这是一个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 中只获取数组的一部分?,它使用copyOfRange()方法。所以,我看了一眼这个方法的源代码。它将指定数组的指定范围复制到一个新数组中。我不想这样做。我想查看数组。
有没有办法得到这个?
在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中是否有相同的功能?我一直在寻找这种类型的阵列切片,但我没有运气.任何帮助都会很棒,谢谢!
我正在创建一个涉及数组的程序,有一次我想打印出数组的一部分。我想知道如何打印出例如数组索引 2-5。
我尝试做这样的事情,但没有奏效。
String[] testArray = {"a", "b", "c", "d", "e", "f'", "g"};
System.out.println(testArray[2,5]);
Run Code Online (Sandbox Code Playgroud)
但它没有用。(并不是说我也完全预料到了)。
我只是想知道你会怎么做这样的事情。
我想从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循环。