使用Arrays.copyOf(),具体看jdk apiimport java.util.*;public class Test { public static void main(String[] args) { String[] s = new String[10]; for (int i = 0; i < 10; i++) s[i] = new String("abc"); s = Arrays.copyOf(s, s.length - 1); for (String str : s) System.out.println(str); } }
add(int index, E element)
http://blog.chinaunix.net/u2/69663/showart_1003481.html
你可以通过 s[s.length-1] = null;来清除数组s最后一个元素的内容.但是数组实际长度并不变.如果你想获得一个长度减一的元素,需要先定义一个长度减一的数组,然后使用使用System.arraycopy复制前n-1一个元素即可.要修改指定位置元素直接s[n] = x,即可.
不能改变大小.
可以改变 s的最后一个元素的引用而不是删除
s[s.length-1]=null;
s[s.length-1]="";
不可以在数组中间插入,而只能覆盖.如果想用可变数组 用ArrayList,或LinkedList
String[] new_strs=new String[strs.length-1];
System.arraycopy(strs, 0, new_strs, 0, 4);
把元素加入指定位置:
指定位置:n
新创建一个足够大小的数组,new_array[n-1]=element;
把原数组以n-1为分割点分别”复制“到数组n-1位置的”2边“
public static void main(String[] args) {
String[] arr = new String[10];
//随便生成一个数组
for(int i=0; i<arr.length; i++) {
arr[i] = "arr" + i;
}
print(arr);
arr = insert(arr,5,"liu");
print(arr);
arr = delete(arr,5);
print(arr);
}
/**
*
* @param arr 源数组
* @param index 要插入的位置
* @param str 要插入的内容
* @return 插入后的数组
*/
private static String[] insert(String[] arr, int index, String str) {
if(index <0 || index > arr.length) {
System.out.println("插入的索引超出了范围!");
return arr;
}
String[] temp = new String[arr.length + 1];
for(int i=0; i<index; i++) {
temp[i] = arr[i];
}
temp[index] = str;
for(int i=index+1; i<temp.length; i++) {
temp[i] = arr[i-1];
}
return temp;
}
/**
*
* @param arr 源数组
* @param index 删除的索引
* @return 返回删除后的数组
*/
private static String[] delete(String[] arr, int index) {
if(index < 0 || index >= arr.length) {
System.out.println("删除的索引超出了范围");
return arr;
}
boolean flag = false;
String[] temp = new String[arr.length - 1];
for(int i=0; i<temp.length; i++) {
if(i == index) {
flag = true;
continue;
}
temp[i] = arr[i];
}
if(flag) {
temp[index] = arr[arr.length - 1];
}
return temp;
}
/**
* 打印数组
* @param arr 要打印的数组
*/
private static void print(String[] arr) {
StringBuffer sb = new StringBuffer();
for(int i=0; i<arr.length; i++) {
sb.append(arr[i] + ",");
}
System.out.println(sb.substring(0, sb.length() - 1));
}
}
String[] s = new String[10];
for (int i = 0; i < 10; i++)
s[i] = new String("abc");
s = Arrays.copyOf(s, s.length - 1);
for (String str : s)
System.out.println(str);
}
}