3

以下は、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));
    }
4

1 に答える 1