2

次のようなフォーマットされた日付のリストを含む ArrayList(String) があります。

element 1: "2012-5-1"
element 2: "2012-8-10"
element 3: "2012-12-5"
element 4: "2013-12-21"
element 5: "2013-12-13"
element 6: "2014-5-8"

一意の年のエントリを含む別のリストまたは通常のプリミティブ配列を作成する最も効率的な/フレームワークの方法は何ですか? たとえば、私の新しいリストには次のものが含まれます。

element 1: "2012"
element 2: "2013"
element 3: "2014"
4

4 に答える 4

3

これを試して

ArrayList<String> yearsOnlylist = new ArrayList<String> ();
for(String s : elements) {
    String yearExtracted = s.substring(0,4);
    yearsOnlylist.add(yearExtracted);
}

ここで、 elementsは、拡張形式の日付リストの名前です。

宛先リストとして使用

 LinkedList<String> yearsOnlylist = new LinkedList<String> ();

ArrayListの代わりに、変換効率を一目で改善できますが(LinkedListのaddはO(1)であるため)、2回目に特定の位置にアクセスすると、効率が低下します(O(n) vs O(1))。

于 2012-12-18T00:50:13.030 に答える
2

それらを Set に追加してリストに変換するだけです:

Set<String> unique = new HashSet<String>();
for (String element : elements) {
    set.put(element.substring(0,4));
}
List<String> uniqueList = new ArrayList<String>();
uniqueList.addAll(unique);
于 2012-12-17T23:40:58.383 に答える
1

配列リストを繰り返し処理し、配列リストの各メンバーの最初の 4 文字の部分文字列を取得します。

その部分文字列を HashSet などのセット実装に追加すると、必要なものが得られます。

于 2012-12-17T23:42:20.973 に答える
-1
public List<String> trimmer(List<String> x) {
    Log.e("", Integer.toString(x.size()));
    for (int i = 0; i < x.size(); i++) {
        String s = x.get(i).toString(); 
        String a = s.substring(6);
        Log.e("after trim is?", a);
        x.remove(i);
        x.add(i, a);
    }
    // check if the element got added back
    Log.e("Trimmer function", x.get(1));

    return x;
}

これはうまくいけばあなたを助けるでしょう!

于 2014-09-18T08:59:31.350 に答える