黑马程序员技术交流社区
标题:
Arraylist集合去重复为什么还剩一个啊
[打印本页]
作者:
gaojing69485542
时间:
2015-11-1 10:56
标题:
Arraylist集合去重复为什么还剩一个啊
ArrayList<String> list = new ArrayList<>();
list.add("java");
list.add("aaa");
list.add("java");
list.add("java");
list.add("bbb");
for (int i =0; i < list.size(); i++) {
if("java".equals(list.get(i))){
list.remove(i);
}
}
作者:
大自然的搬运工
时间:
2015-11-1 11:49
没看懂想问啥。。。。飘过。。
作者:
Jero
时间:
2015-11-2 10:24
首先就这个问题分析,当你遍历的时候,从第0个元素开始,移除了第0个元素"java",随后aaa,java,java变成了第0,1,2个元素,接下来遍历的索引是1,就是拿到的是原来list里面索引为2的java,移除掉。接下来数组变成aaa,java,并且索引为0,1,当下一次循环的时候,索引为2,就不再进去了。要改正这个程序,应该这样:
public class Main {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("java");
list.add("aaa");
list.add("java");
list.add("java");
for (int i = list.size(); i >= 0; i--) {
list.remove("java");
}
System.out.println(list);
}
}
作者:
大地z灵
时间:
2015-11-2 11:34
漏掉的是第二个“java”,移除元素后应该变量i--;
ArrayList<String> list = new ArrayList<>();
list.add("java");
list.add("aaa");
list.add("java");
list.add("java");
list.add("bbb");
for (int i =0; i < list.size(); i++) {
if("java".equals(list.get(i))){
list.remove(i);
i--;
}
}
作者:
会盟天下英豪
时间:
2015-11-3 18:54
楼上说的对
作者:
孤单背影
时间:
2015-11-3 21:25
直接用迭代器不是更省脑子?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2