0

私は次のようなリストを持っています:

List<String> x = new ArrayList<String>();
x.add("Date : Jul 15, 2010 Income : 8500 Expenses : 0");
x.add("Date : Aug 23, 2010 Income : 0 Expenses : 6500");
x.add("Date : Jul 15, 2010 Income : 0 Expenses : 4500");

私は今、次のようにこれらのインデックスにアクセスしたい:

int index1 = x.indexOf("Date : Aug 23, 2010");
//1

int index2 = x.indexOf("Date : Jul 15, 2010");
//0

int index3 = x.lastIndexOf("Date : Jul 15, 2010");
//2

何か助けはありますか?前もって感謝します。

これは私が探していた解決策です:

// traverse the List forward so as to get the first index
private static int getFirstIndex(List<String> theList, String toFind) {
    for (int i = 0; i < theList.size(); i++) {
        if (theList.get(i).startsWith(toFind)) {
            return i;                
        }
    }
    return -1;
}

// traverse the List backwards so as to get the last index
private static int getLastIndex(List<String> theList, String toFind) {
    for (int i = theList.size() - 1; i >= 0; i--) {
        if (theList.get(i).startsWith(toFind)) {
            return i;               
        }
    }
    return -1;
}

これらの 2 つの方法は、私が望んでいた要件を正確に満たします。

4

5 に答える 5

6

組み込みメソッドではそれを行うことはできません。

次の 2 つのオプションがあります。

  1. リストを手動で反復して使用するstartsWith()(またはindexOf()、正確に必要なものに応じて)または
  2. データ構造をに変更しMap<String,String>、日付をキーとして使用します。

String一般的に言えば、構造化されたデータ型として使用しようとしていますが、そうではありません。非構造化の汎用データです。これは、コードで処理するのに最適なデータ型ではありません。

于 2013-06-05T15:02:57.943 に答える