我有一个数组列表
ArrayList<String> list=new ArrayList<String>();
list.add("Apple");
list.add("Ball");
list.add("Cat");
list.add("dog");
list.add("Egg");
我想删除“Cat”之后的所有项目。
有没有办法做到这一点?
答案 0 :(得分:4)
您可以获得subList(...)
个剩余元素,clear()
它:
int index = list.indexOf("Cat");
if (index > -1) {
list.subList(index + 1, list.size()).clear();
}
我看到其他答案尝试尝试使用remove
和removeAll
方法。
那效率不高,
因为remove(Object)
和removeAll(Collection)
方法尝试匹配列表中的元素,这需要扫描整个列表。
更糟糕的是,如果元素可能出现多次,
那么这些技术也可能错误地在目标之前删除元素。
使用subList
和clear
是正确,高效和简单的。