2

費やした時間とタスクの数を示すレポートモジュールに取り組んでいます。値はJavaBeanに設定され、Beanオブジェクトは配列に格納されます。時間とタスク数を取得するために個別のクエリを使用しています。次に、時間とタスク数に基づいて配列を並べ替える必要があります。以下のコードは、文字列のみを比較します。

if (!list.isEmpty()) {
    Collections.sort(list, new Comparator<Project>() {
        @Override
        public int compare(Project p1, Project p2) {

            return p1.getName().compare(p2.getName());
        }
       });
   }

配列に格納されているJavaBeanのプロパティの整数値を並べ替えるのに問題があります。助けていただければ幸いです。

4

6 に答える 6

7

あなたが持っているとあなたが言う質問の下のあなたのコメントで:

Project[] array = new Project[3];

もし私があなただったら、私は次のように宣言Projectします

public class Project implements Comparable<Project> {

    @Override
    public int compareTo(Project other) {
        return this.id - other.id; // or whatever property you want to sort
    }

次に、を呼び出すだけで配列を並べ替えることができます

Arrays.sort(array);

クラスにインターフェースを実装させたくない場合はComparable、コンパレータを以下に渡すことができますArrays.sort()

    Arrays.sort(array, new Comparator<Project>() {
        @Override
        public int compare(Project o1, Project o2) {
            return o1.id - o2.id; // or whatever property you want to sort
        }
    });

私は匿名のものを使用しました。他の場所で必要な場合は、それを独自のクラスに抽出することもできます。

于 2013-02-19T09:53:48.603 に答える
0

次のようなものはどうですか:

Project[] project = ..initialise array;

List<Project> projectList = Arrays.asList(project);
Collections.sort(projectList, new Comparator<Project>() {
    @Override
    public int compare(Project p1, Project p2) {
        if(p1.getIntProperty() == p2.getIntProperty()) return 0;
        return p1.getIntProperty() > p2.getIntProperty() ? 1 : -1;
    }
   });
}
于 2013-02-19T09:26:57.640 に答える
0

これを試して整数をソートしてください

return(p1.getIntProperty() - p2.getIntProperty());
于 2013-02-19T09:28:10.610 に答える
0

Java の Comparator および Comparable インターフェースを調べましたか。compare() メソッドを使用して、配列内の要素を比較し、それに応じて並べ替えることができます。同じ質問がすでに回答されているこの投稿を確認しますJavaコレクションの並べ替え

于 2013-02-19T09:35:04.953 に答える
0

にコンパレータを渡すことができますArrays.sort():

Arrays.sort(array, new Comparator<Project>() {
    @Override
    public int compare(Project o1, Project o2) {
        return o1.id - o2.id; // or whatever property you want to sort
    }
});
于 2014-06-26T11:48:41.747 に答える
0

があると仮定するとList<Project>、Java8 で必要なのは ( Comparator にラムダ式を使用できるため) 次のとおりです。

Collections.sort(list, (o1, o2) -> o1.getName().compareTo(o2.getName()));

List には sort(Comparator) メソッドがあるため、これをさらに短縮できます。

list.sort((o1, o2) -> o1.getName().compareTo(o2.getName()));

メソッド参照を使用すると、さらにクリーンになります。

list.sort(Comparator.comparing(Project::getName));
于 2017-06-14T07:55:49.147 に答える