0

我有以下数组:

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];
                }
            }   

你知道更好的方法吗?

4

1 回答 1

0

如果您在主要情况下使用 Array - 这是不可能的。数组具有“固定”大小。但在某些编程语言中,可以使用 ArrayList、List、HasTable 等实体。

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

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];
        }
    }
}
于 2013-05-09T07:38:33.780 回答