在特定索引之后从列表中删除所有元素


80

List / ArrayList中是否有任何方便的方法,我们可以通过该方法删除特定索引之后的List的所有元素。而不是手动循环进行删除。

为了进一步说明,如果我有一个包含10个元素的列表,我想提到索引3,然后删除索引3之后的所有元素,并且我的列表现在仅包含开始的4个元素(从0开始计数)

Answers:


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

子列表操作反映在原始列表中,因此这清除了从索引4包含在内的list.size()所有内容,也清除了索引3之后的所有内容。在文档中专门使用了范围删除作为示例:

此方法消除了对显式范围操作(数组通常存在的那种范围)的需要。通过传递subList视图而不是整个列表,可以将期望列表的任何操作用作范围操作。例如,以下成语从列表中删除了一系列元素:

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

12

使用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());
    }
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.