我有一个char [],我想将每个索引的值设置为相同的char值.
有明显的方法(迭代):
char f = '+';
char [] c = new char [50];
for(int i = 0; i < c.length; i++){
c[i] = f;
}
Run Code Online (Sandbox Code Playgroud)
但是我想知道是否有一种方法可以利用System.arraycopy或者等效的东西可以绕过迭代的需要.有没有办法做到这一点?
编辑:
来自Arrays.java
public static void fill(char[] a, int fromIndex, int toIndex, char val) {
rangeCheck(a.length, fromIndex, toIndex);
for (int i = fromIndex; i < toIndex; i++)
a[i] = val;
}
Run Code Online (Sandbox Code Playgroud)
这是完全相同的过程,这表明可能没有更好的方法来做到这一点.
无论如何,对所有
建议的人都要+1 fill- 你们都是正确的,谢谢你们.
是否有任何语法/包允许快速填充具有数字范围的java数组,例如perl?
例如
int[] arr = new int[1000];
arr=(1..500,301..400,1001..1400); // returns [1,2,3,4,...,500,301,302,...,400,1001,1002,...1400]
Run Code Online (Sandbox Code Playgroud)
此外,这里有一个包,允许在如上所述的数字列表中获取第n个数字,而不实际创建数组(可能是巨大的)?
例如
BunchOfRangesType bort = new BunchOfRangesType("1..500","301..400","1001..1400");
bort.get(0); // return 1
bort.get(500); // return 301
bort.get(501); // return 302
Run Code Online (Sandbox Code Playgroud)
实现起来并不困难,但我想这可能很常见,也许它已经完成了.