特定のインデックスの後のリストからすべての要素を削除します


83

List / ArrayListに、特定のインデックスの後のリストのすべての要素を削除できる便利な方法はありますか?削除するために手動でループする代わりに。

より説明するために、10個の要素のリストがある場合、インデックス3について言及したいと思います。その後、インデックス3の後のすべての要素が削除され、リストは4つの要素のみで構成されます(0から数えます)

回答:


145
list.subList(4, list.size()).clear();

サブリスト操作は元のリストに反映されるため、これにより、インデックス4を含むものからlist.size()排他的なものまで、つまりインデックス3以降のすべてがクリアされます。範囲の削除は、ドキュメントの例として具体的に使用されています。

この方法により、(配列に一般的に存在する種類の)明示的な範囲操作が不要になります。リスト全体ではなくsubListビューを渡すことで、リストを期待する操作を範囲操作として使用できます。たとえば、次のイディオムは、リストから要素の範囲を削除します。

     list.subList(from, to).clear();

13

sublist()とclear()を使用して、

public class Count
{
    public static void main(String[] args)
    {
        ArrayList<String> arrayList = new ArrayList<String>();
        arrayList.add("1");
        arrayList.add("2");
        arrayList.add("3");
        arrayList.add("4");
        arrayList.add("5");
        arrayList.subList(2, arrayList.size()).clear();
        System.out.println(arrayList.size());
    }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.