-1

arrayList 内の一連の整数を介してフィルターとして機能する関数を開発したいと考えています。基本的に、arrayList の最大値と最小値を取得する必要があります。

例: min= 1970 AND max=2012 (年について話しますが、単純な整数として扱われます)

出力が次のようになるように、5 年の範囲を決定する必要があります。

「1970 年から 1975 年まで」 onclick 「1970 年」、「1971 年」、「1972 年」、「1973 年」、「1974 年」、「1975 年」、「1970 年から 1975 年まで」のリストが表示されます。.. ....「2010年から2012年まで」 onclick 「2010年」、「2011年」、「2012年」のリストが表示されます

以前、間隔をアルファベット順に作成するためにパターン/マッチャーを使用しました。ここでは、文字列を正しいアルファベットの範囲 (例: A から B) に分類しますが、5 の範囲を定義してサブ配列を作成する必要があるため、これは異なります。

助けてください。

ありがとう

4

1 に答える 1

-1

リストがソートされている場合は、低い値のインデックス、高い値のインデックスを取得し、それらのインデックスを使用してサブリストを返す単純な関数を使用できます。

プログラムの例を次に示します。

public class Main {

    public static void main(String[] args) {

        List<Integer> myList = new ArrayList<Integer>();

        for (int i = 1970; i < 2013; i++) {
            myList.add(i);
        }

        List<Integer> subList = getRange(myList, 1988, 1994);

        for (Integer i : subList) {
            System.out.println(i);
        }

    }

    public static List<Integer> getRange(List<Integer> fromList, int lowVal, int highVal)
    {
        int lowValIndex = fromList.indexOf(lowVal);
        int highValIndex = fromList.indexOf(highVal);

        return fromList.subList(lowValIndex, highValIndex + 1); 
    }

}

これにより、リストから1988->1994が返されます。

于 2012-04-24T10:13:00.307 に答える