日期:2014-05-20 浏览次数:20897 次
class DoMove {
void move(int[] a) {
int count = 0; //新数组的游标
for (int i = 0; i < a.length; i++) {
if (a[i] != 0) {
a[count] = a[i];
count++; //调到下一个游标
}
}
int newArr[]; //新数组,可以用参数传回去
newArr = new int[count]; //把count终值作为新数组的长度
System.arraycopy(a, 0, newArr, 0, count); //复制指定长度数组,详细方法可以看API
System.out.println(Arrays.toString(newArr)); //数组的输出
}
}
------解决方案--------------------
数组长度不能改变的 ,可以移动数据 ,但是长度还是原来的 ,除非用List或者再新建一个长度为原来长度 -1 的数组,然后再赋值
------解决方案--------------------
package com.cai;
import java.util.ArrayList;
import java.util.List;
public class MoveArr {
/**
* @param args
*/
public static void main(String[] args) {
String[] strArrs = { "1", "2", "3", "4", "5", "6", "7", "8" };
List list = new ArrayList();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");
list.add("7");
list.add("8");
list.add("9");
System.out.println("-----原始数组内容-----");
for (int i = 0; i < strArrs.length; i++) {
System.out.print(strArrs[i]+ " ");
}
System.out.println("");
System.out.println("---------------------");
// 删除 第1个元素
String[] retArrs = moveArr(strArrs, 0);
System.out.println("-----删除第一个数组元素0 begin-----");
for (int i = 0; i < retArrs.length; i++) {
System.out.print(retArrs[i] + " ");
}
System.out.println("");
System.out.println("-----删除第一个数组元素0 end-----");
System.out.println("-----List内容-----");
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i)+ " ");
}
System.out.println("");
System.out.println("---------------------");
// 删除第6个元素 ,因为索引时从0开始
moveList(list, 5);
System.out.println("-----删除第6个List元素 begin-----");
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + " ");
}
System.out.println("");
System.out.println("-----删除6个List元素 end-----");
}
public static String[] moveArr(String[] strArrs, int index) {
if (strArrs != null && strArrs.length > 0 && strArrs.length > index) {
String arrs[] = new String[strArrs.length - 1];
int idx = 0;
for (int i = 0; i < strArrs.length; i++) {
if (i != index) {
arrs[idx++] = strArrs[i];
}
}
return arrs;
}
return null;
}
/**
* 使用List保存 ,然后删除指定索引的数据
*
* @param list
* @param index
*/
public static void moveList(List list, int index) {
if (list != null && list.size() > 0 && list.size() > index) {
list.remove(index);
}
/*传进来5,则删除第五个元素
* index += 1 ; if (list != null && list.size() >0 && list.size() >
* index){ list.remove(index) ; }
*/
}
}