2012-02-26 16 views
1

ArrayListが昇順であるかどうかを判断するメソッドを記述しようとしています。 ArrayListのタイプは、Java初心者として整数、文字列などをすることができ、私はジェネリック、同等のなどの周り私の頭を取得して、最後の数時間を費やしてきたし、これは私がこれまで持っているものです:ArrayListが整っているかどうかを判断する汎用メソッド(Java)

static boolean isOrdered(ArrayList<? extends Comparable<?>> a) { 
    for(int i=0; i < a.size()-1; i++) { 
     if (a.get(i).compareTo(a.get(i+1)) > 0) return false; 
    } 
    return true; 
} 

私はそれが比較できるかどうかわからないので、それがあることを理解し、私はthisを読んでから集める何より

The method compareTo(capture#11-of ?) in the type Comparable is not applicable for the arguments (capture#12-of ? extends Comparable

:私は、以下のコンパイルエラーが発生します。しかし、私はまだこれを修正する方法がわかりません。

私はまだJava(Pythonに由来)の新機能はまだありません。アドバイスや洞察力を感謝します。ありがとうございました!

答えて

4

ここでは一般的な問題です。これを解決する方法はTと呼ばれるすべての要素が同じタイプであるコンパイラを、伝えることです:

static <T extends Comparable<T>> boolean isOrdered(ArrayList<T> list) 
    ... 
} 

これは、全体のリストは、他のTと比較した値をサポートし、いくつかのタイプTのすべての要素が含まれていることを意味し値。

+0

ああ、ありがとう!私は、静的の後に型を定義しなければならないことを認識しませんでした。私は括弧の中で(有用な)効果を出さないようにしました。 – xlm

+1

最良の結果を得るには '>' – newacct

関連する問題