从2维数组中删除空值(单元格)

时间:2013-05-09 07:27:49

标签: arrays null clear

我有以下数组:

Point[][] points;

使用包含空值的其他数组初始化它。 我想要的是删除空单元格,因此新数组将不包含任何空值。

例如:

Other Array: P, P, P
             P, P, P
             N, P, N
             N, P, N

New Array:   P, P, P
             P, P, P
                P,
                P,

我怎样才能实现它?

更新

这样做的好方法吗?

Point[][] temp = cv.getPtStroke();
int i = 0;
int j = 0;
for (; i < temp.length && temp[i]!= null; i++) {}
Point[][] temp1 = new Point[i][];

i = 0;
for (; i < temp.length && temp[i]!= null; i++)
{
    for (; j < temp[i].length && temp[i][j]!= null; j++){}
    temp1[i] = new Point[j];
}

更新: 解决问题:

Point[][] temp = cv.getPtStroke();
            int i = 0;
            for (; i < temp.length && temp[i]!= null; i++) {}
            Point[][] temp1 = new Point[i][];
            i = 0;
            for (; i < temp.length && temp[i]!= null; i++)
            {
                int j = 0;
                for (; j < temp[i].length && temp[i][j]!= null; j++){}
                temp1[i] = new Point[j];
            }

            int k = 0;
            int temp1XSize = temp1.length;
            int temp1YSize = 0;
            for (; k < temp1XSize; k++)
            {
                temp1YSize = temp1[k].length;
                int l = 0;
                for (; l < temp1YSize; l++){
                    temp1[k][l] = temp[k][l];
                }
            }   

你知道更好的方法吗?

1 个答案:

答案 0 :(得分:0)

如果你在大型案件中使用Array - 这是不可能的。数组具有“修复”大小。但在某些编程语言中,可以使用ArrayList,List,HasTable等实体。

例如在PHP Arrays中,类似于ArrayList(或List)。在JavaScript中,您可以使用object而不是array。

PHP示例:

//Origin Array
$array = array(
    array(1,2,3),
    array(null,2, null),
    array(null,2,null),
);
// New array
$result = array();
foreach ($array as $i => $row) {
    $result[$i] = array();
    foreach ($array[$i] as $j => $cell) {
        if ($cell !== null) {
            $result[$i][$j] = $cell;
        }
    }
}

JavaScript代码:

var array = [
    [1,2,3],
    [null,2,null],
    [null,2,null]
];
var result = {};
for (var i = 0; i < array.length; i++ ) {
    result[i] = {};
    for (var j = 0; j < array[i].length; j++ ) {
        if (array[i][j] !== null) {
             result[i][j] = array[i][j];
        }
    }
}