2016-11-16 29 views
0

私は以下の問題があります。 私は2つの異なるデータ型の配列を持っています。Javaで異なるデータ型の2つの配列をソート

byte[] a = {2,5,3}; 
long[] b = {2,0,1}; 

そして、bをソートして、aのエントリをそれぞれs.t.に変更する必要があります。私はほとんどの人がコンパレータであることを行うが、それは、異なるデータ型で動作するようには思えないことを見てきました

byte[] a = {5,3,2}; 
long[] b = {0,1,2}; 

を取得します。私は配列の長さが非常に大きいので、効率的なソリューションを探しています。しかし、aには2つの異なるエントリ0と1しかありません(しかし、それでももっと多くのエントリのオプションを持つためにバイトとして保持したい)と、すべてのペア(0、x)は既にソートされています。最初のエントリは0ですが、すでにソートされています)。ペア(1、x ')についても同様であるが、bの項目は完全にソートされていない。私の問題がはっきりしていればいいと思う私はどんな提案にも満足しています。

ありがとうございます!

編集:明らかにこの質問:Sort a parallel array using Arrays.sort()は非常に似ています。しかし、実際の例は再現できませんでした。誰かが完全な実例を持っていますか?

+2

これらの「並列」コレクションを持つのではなく、「byte」と「long」で新しいクラスを作成し、そのタイプの*単一のコレクション/配列を作成することはほぼ確実です。次に、その型のコンパレータを使ってそのコレクション/配列をソートするだけです。 –

+0

私はこれを解決するために、次のようなデータ型を使用します:http://stackoverflow.com/questions/18232788/procedure-to-sort-a-two-dimensional-int-array-depending-on -columnしかし、私はその解決策に満足していませんが、それは瞬間大丈夫です... – PhysX

答えて

0

あなたの質問にタグを付けると、私はあなたの問題の説明が表示されますが、あなたはクラスがありません。に表示されます。

public class MyClass implements Comparable { 

    private byte; 
    private long; 
    //getters setters 
    //compare method according to your requirements. 
} 

次に、並べ替えることができるMyClass[]があります。

あなたの問題に固執したい場合は、並べ替えアルゴリズムを実装して配列の1つを並べ替えるだけで、スワップだけを実行する場合は、2番目の配列の要素も入れ替えます。

関連する問題