0

私は次の配列を持っています:

Point[][] points;

null 値を含む他の配列を使用して初期化されます。私が望むのは、null セルを削除することです。そのため、新しい配列には null 値が含まれません。

例えば:

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

主要なケースで配列を使用する場合、これは不可能です。配列には「固定」サイズがあります。しかし、一部のプログラミング言語では、ArrayList、List、HasTable などのエンティティを使用することで可能です。

たとえば、PHP 配列は 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 に答える