黑马程序员技术交流社区
标题:
关于Collection中的retianAll();方法
[打印本页]
作者:
continue
时间:
2015-9-28 22:20
标题:
关于Collection中的retianAll();方法
要求是要去除List中的重复元素,视频中老师讲的是先清空原集合,再将临时容器中的元素添加到集合中
但是我突然想起了retainAll();方法
因为临时容器中存入的就是唯一元素,那么去交集不就可以了吗?
但是运行结果不对,运行结果原集合根本没有改变,求教这是怎么回事?求分析
package LinkedList;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListTest {
public static void main(String[] args) {
/*
* 去除LinkedList中重复的元素
* 思路:
* 1,先创建一个临时容器,用于存储唯一性的元素。
* 2,遍历原容器,将遍历到的元素到临时容器去判断,是否存在。
* 3,如果存在,不存到临时容器中,如果不存在,存储到临时容器中。
* 4,遍历结束后,临时容器中存储的就是唯一性的元素。
* 5,如果需要将这些唯一性的元素保留到原容器中,只要将原容器清空,并将临时容器中的元素添加到原容器中即可。
*
*/
List list = new ArrayList();
list.add("HelloKitty1");
list.add("HelloKitty2");
list.add("HelloKitty1");
list.add("HelloKitty2");
list.add("HelloKitty1");
getSingleElement(list);
for (Iterator it = list.iterator(); it.hasNext();) {
System.out.println(it.next());
}
}
public static void getSingleElement(List list){
//创建一个临时容器
List temp = new ArrayList();
//遍历原容器
for (Iterator it = list.iterator(); it.hasNext();) {
//判断元素是否存在,不存在,就存入临时容器中。
Object obj = it.next();
if(!temp.contains(obj))
temp.add(obj);
}
/*
//遍历结束,清空原容器。
list.clear();
//将临时容器中的元素添加到原容器中
list.addAll(temp); */
list.retainAll(temp);//使用该方法替代先清空再添加的做法。
}
}
作者:
syusouki
时间:
2015-9-28 22:45
System.out.println(temp.retainAll(list)); 答应的是false,说明没成功
作者:
continue
时间:
2015-9-28 23:57
syusouki 发表于 2015-9-28 22:45
System.out.println(temp.retainAll(list)); 答应的是false,说明没成功
为什么会false呢?方法是可用的,也没有报错,应该是运算成功的啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2