我有一个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
- 你们都是正确的,谢谢你们.
有两种方法可以将整数/浮点数组清零:
memset(array, 0, sizeof(int)*arraysize);
Run Code Online (Sandbox Code Playgroud)
要么:
for (int i=0; i <arraysize; ++i)
array[i]=0;
Run Code Online (Sandbox Code Playgroud)
显然,memset对于大型更快arraysize
.但是,在什么时候memset的开销实际上大于for循环的开销?例如,对于大小为5的数组 - 哪个最好?第一个,第二个,甚至可能是未滚动的版本:
array[0] = 0;
array[1] = 0;
array[2] = 0;
array[3] = 0;
array[4] = 0;
Run Code Online (Sandbox Code Playgroud)