1

arraylist から複数の項目を削除したい。

これはリストです:

String1-1, String5, String6, String1-2, String5, String6, String1-3, String5, String6

リストから削除したいString1-。しかし、すべてString1-が同じ目的を持っているわけではないので、それらは削除されません。だからlist.remove("String1-")機能していません。

問題は、削除したい文字列の末尾が同じでない場合に、arraylist から複数の項目を削除する方法です。

4

2 に答える 2

1

今後の参考のために、Google Guava を使用したソリューションを次に示します。

質問の文字列からリストを作成するセットアップ コード:

String stringsString = "String1-1, String5, String6, String1-2, String5, String6, String1-3, String5, String6";
String[] stringsArray = stringsString.split(", ");
Iterable<String> stringsList = Arrays.asList(stringsArray);

次に、不要なアイテムを除外します。

Iterable<String> filtered = Iterables.filter(stringsList, new Predicate<String>() {
    @Override
    public boolean apply(String input) {
        return !input.startsWith("String1-");
    }
});

この単純なルーチンは、Iterable指定した要素のみを含む new を作成します。これの優れた点は、遅延実行され (本当に使用したい場合にのみ評価される)、元のコレクションを変更しないことです。ほとんどの場合、ソフトウェアの状態を不変 (変更不可) にすることが最善の方法です。可変コレクションの処理は難しく、ソフトウェア エラーの原因となることがよくあります。

于 2013-08-28T16:06:15.540 に答える