大家好,又见面了,我是你们的朋友全栈君。
前言
这是一个比较经典的面试题,相信也会有不少人遇到,今天就在此记录一下,写了两种方式供大家参考。
方式一
在for循环中删除元素,倒序遍历ArrayList能够有效防止漏删,这里大家可能会有疑问了?假设按照从0到size-1下标来删那么如果有相邻的两个元素是一样的,删除了第一个,此时数组长度会-1并且所有元素往前移动一位,那么第二个就移动到第一个元素的位置了,此时控值for循环的下标i已经+1了等于直接就跳过了第二个重复元素,倒叙就不会出现此类情况了。
List<String> strs = new ArrayList<>();
strs.add("1")
strs.add("2")
strs.add("3")
strs.add("4")
strs.add("5")
strs.add("6")
for (int i = strs.size() - 1; i >= 0; i --) {
if(strs.get(i).equals("1")){
strs.remove(i);
}
}
方式二
使用迭代器遍历ArrayList并删除某一个元素
List<String> strs = new ArrayList<>();
strs.add("1")
strs.add("2")
strs.add("3")
strs.add("4")
strs.add("5")
strs.add("6")
Iterator<String> iter = strs.iterator();
while(iter.hasNext()) {
if (iter.next().toString().equals("1")) {
iter.remove();
}
}
System.out.println(strs);
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/163108.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...