0

2つのベクトルを埋めて、それらを互いに組み合わせるにはどうすればよいですか(インデックスまたはクラスのオブジェクトタイプ)。インデックスを使用してそれらを組み合わせる場合は、Collections.sortで並べ替えを処理できます。それ以外の場合は、コンパレータを作成する必要があります。

Java1.4の規則に従ってコーディングする必要があります。

あなたの想像力をより簡単にするために; これは、並べ替えベクトル(行)とコンテンツベクトル(すべての列)を持つグリッドです。それらはベクトルに入力され、ソートされる必要があります。

コンテキスト:すべてのコンポーネントを奇妙な順序で含むGridBagLayoutがあります。すべてのコンポーネントを循環して、正しいグリッド順序(gridx、gridy)で入力する必要があります。その解決策のために、私は2つのベクトルについて考えました。1つは行を定義し、その列を含むベクトルを指します。ベクトルの入力中に並べ替えが解決されるか、2番目のステップで並べ替える必要があります。Java 4の場合、オブジェクトを含む2つのベクトル以外のアプローチはないと思いますよね?

4

2 に答える 2

1

OO ソリューションは、比較を実装し、実際のオブジェクトへのポインターを保持するもので、両方のベクトルのオブジェクトをラップすることです。このようにして、両方のベクトルを互いに独立してソートし、ラッパーを使用して実際のオブジェクトを取得できます。

これが「Decorator」のデザインパターンです。

于 2009-04-27T08:30:19.157 に答える
0

わかったら教えてください。入力として、2 つのベクトルが与えられます。1 つ目は、2 番目のベクトルのインデックスを参照する行番号の順序付きリストです。2 番目のベクトルは、何かのリストです。2 番目のベクトルと同じオブジェクトを含むが、最初のベクトルで記述された順序でソートされたベクトルが必要です。

それがあなたがやろうとしていることだと仮定すると、これは私がそれを行う方法です:

public class ThisHadBetterNotBeAHomeworkAssignmentYoungMan {

    public Vector orderContent(Vector indices, Vector content) {
       Object[] orderedStuff = new Object[content.size()];
       for( int i=0; i < indices.size(); i++ ) {
          orderedStuff[i] = content.get(((Integer)indices[i]).intVal());
       }
       return new Vector(orderedStuff);
    }
}

//これはかなり大雑把なコードであることに注意してください。私はそれを実行したり、コンストラクターとしてベクターに要素の配列を渡すことができるかどうかを確認したりしていませんが、アイデアは理解できます。

//また、あなたが何を求めているのか正確にはわからず、完全に間違っている可能性があることにも注意してください.

于 2009-04-27T07:03:12.610 に答える