以下は、2 つのコンストラクターを持つコード サンプルです。1 つは空で、もう 1 つは行列を受け取ります。クライアントは、空のコンストラクターを呼び出してから、配列を個別に渡して add 関数を呼び出すか、行列を取る 2 番目のコンストラクターを呼び出すことができます。
ここでの私の唯一の失望は、パブリック関数「add」を呼び出すプライベート関数「addAll」です。
コンストラクター内で for ループを使用せずにこれを改善する方法はありますか (パブリック メソッドを呼び出すプライベート関数を意味します)。
public class MergeNSortedArray {
private PriorityQueue<ArrayContainer> heap;
int totalLength;
public MergeNSortedArray() {
heap = new PriorityQueue<MergeNSortedArray.ArrayContainer>();
}
public MergeNSortedArray(int[][] matrix) {
addAll(matrix);
}
private void addAll(int[][] matrix) {
for (int[] a : matrix) {
add(a);
}
}
public void add(int a[]) {
totalLength += a.length;
heap.add(new ArrayContainer(a));
}