-3

私はまだJavaに非常に慣れていないため、コードの編成に関する多くの問題に遭遇しました。クラスにはデータとそのデータを操作するメソッドが含まれている必要があることはわかっていますが、コードをどのように編成するかについては、まだ (私には思えますが) 灰色の領域が見つかります。

たとえば、データとデータを操作するメソッドを含む Object1 があります。Object1 には、このクラスが派生したデータのソートされていない Map を返す (取得する) メソッドが含まれています。DifferentObject1 クラスでは、Object1 のデータを使用して、このデータのグラフを作成します。DifferentObject1 は、受信したマップ内のデータを並べ替える必要があります。マップのキーは文字列で、値は float です。

私の目標は、float の値に応じてマップを最大から最小に並べ替えることです。コードの編成に関する限り、このデータのソートはどこで行われるべきでしょうか? 現在、_myData 変数はソートされていないデータのマップです。また、クラスに Comparator を実装することは、マップをソートする最良の方法ですか?

視覚化に役立つコードを次に示します。

public class Object1
{
   private Map<String, float> _myData = new HashMap<String, float>();

   public Object1
   { 
       *do stuff....*
   }

   public Map<String, float> getMyData() { return _myData; }
}

public class DifferentObject1
{
    public DifferentObject1(Object1 obj1)
    {
        *do stuff with obj1*
    }
}

したがって、基本的に、DifferentObject1 クラスがデータを使用してグラフを作成した後、DifferentObject1 クラスはデータの並べ替えられたグラフを表示する必要があります。

4

2 に答える 2

1

私の知る限り、Map は値の並べ替えには適していません。TreeMap は要素をキー順に挿入しますが、値を並べ替える場合は、最初に値のコレクションを取得し (values() メソッド)、コレクションとして並べ替える必要があります。

于 2013-05-07T16:38:54.293 に答える
1

適切なデザインは、部分的にはスタイルの問題ですが、ほとんどは意味の問題です。Comparableデータの並べ替えがデータ自体に論理的に結び付けられている場合、データを表すクラスがインターフェイスを実装する (さらに、常に並べ替えられる方法でデータを表す)ことは理にかなっています。Comparator並べ替え順序の定義がコンテキストに依存している場合 (アプリケーションでのように聞こえます)、コンテキストに適したを定義する方が理にかなっています。

于 2013-05-07T16:40:29.393 に答える