如何解决有没有办法在二维数组中删除特定的行?
| 可能重复: 如何删除二维数组中的行 所以我有一个二维数组String [] []数组,有9行,我想删除第五行。有没有一种方法可以告诉Java删除第五行,就像我可以轻松使用ArrayLists一样?解决方法
基本数组的功能范围确实非常有限。如果您需要执行此类更复杂的操作,则最简单的方法是跳过某些List实现。
喜欢:
String[][] array;
array = new String[][]{new String[]{\"a\",\"b\",\"c\"},new String[]{\"d\",\"e\",\"f\"},new String[]{\"g\",\"h\",\"i\"}};
List<String[]> l = new ArrayList<String[]>(Arrays.asList(array));
l.remove(1);
String[][] array2 = l.toArray(new String[][]{});
, 使用以下代码从2d数组中删除特定行
import java.util.ArrayList;
import java.util.List;
public class RemoveRowFrom2dArray
{
private double[][] data;
public RemoveRowFrom2dArray(double[][] data)
{
int r= data.length;
int c= data[0].length;
System.out.println(\"....r....\"+r+\"....c....\"+c);
this.data= new double[r][c];
for(int i = 0; i < r; i++) {
for(int j = 0; j < c; j++) {
this.data[i][j] = data[i][j];
}
}
}
/* convenience method for getting a
string representation of matrix */
public String toString()
{
StringBuilder sb = new StringBuilder(1024);
for(double[] row : this.data)
{
for(double val : row)
{
sb.append(val);
sb.append(\" \");
}
sb.append(\"\\n\");
}
return(sb.toString());
}
public void removeRowsWithRowNumber(double rowNotToBeAdd)
{
List<double[]> rowsToKeep = new ArrayList<double[]>(this.data.length);
for( int i =0; i<this.data.length; i++){
if(i!=rowNotToBeAdd){
double[] row = this.data[i];
rowsToKeep.add(row);
}
}
this.data = new double[rowsToKeep.size()][];
for(int i=0; i < rowsToKeep.size(); i++)
{
this.data[i] = rowsToKeep.get(i);
}
}
public static void main(String[] args)
{
double[][] test = { {1,2,3,4,5,6,7,8,9},{6,9,10,5},{2,{9,1,10},{5,2} };
//make the original array and print it out
RemoveRowFrom2dArray m = new RemoveRowFrom2dArray(test);
System.out.println(m);
//remove rows with trow number 4 from the 2d array
m.removeRowsWithRowNumber(4);
System.out.println(m);
}
}
, 好吧,如果您不想使用列表,则可以使用以下方法:
public String[][] removeRowFrom2dArray(String[][] array,int row){
int rows = array.length;
String[][] arrayToReturn = new String[rows-1][];
for(int i = 0; i < row; i++)
arrayToReturn[i] = array[i];
for(int i = row; i < arrayToReturn.length; i++)
arrayToReturn[i++] = array[i];
return arrayToReturn;
}
, 二维数组不过是数组的数组。
因此,我们可以删除刚刚分配的空白:
arr[4] = new String[n];
如果要完全删除第5行,则可以通过指定null来删除。
Array具有固定的长度和灵活性,就像ArrayList会在数组上附加编码一样。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。