传送门:list、map、set的区别
消除集合中重复元素,根本考差点即list与set的区别。
简单点说:list 代表有索引编号的集合,可以存放重复的对象,可以在指定的位置插入对象。set存放不重复的对象,只能有一个null元素。
知道两者的区别,就可以利用Set不允许重复值的特点,消除集合中的重复元素。
例:
1.利用ArrayList去除集合中重复字符串元素
ArrayList list = new ArrayList();
list.add("aa");
list.add("bb");
list.add("cc");
list.add("aa");
list.add("bb");
ArrayList newList = getSingle(list);
System.out.println(newList);
/*
创建一个新的集合,存放去除重复元素后的元素。
分析:1,创建新集合
2,根据传入的旧集合获取迭代器
3,遍历旧集合
4,通过新集合判断是是否包含旧集合中的元素,如果包含,就不添加,否则才添加
*/
public static ArrayList getSingle(ArrayList list){
ArrayList newList = new ArrayList(); //创建新集合
Iterator it = list.iterator(); //根据传入的集合旧集合获取迭代器
while(it.hasNext()){ //遍历旧集合
Object obj = it.next(); //记录每一个元素
if(!newList.contains(obj)){ //如果新集合中不包含旧集合中的元素,则添加
newList.add(obj);
}
}
return newList;//返回的集合即去掉重复元素后的集合
}
2.利用Set去除集合中重复字符串元素
ArrayList list = new ArrayList();
list.add("aa");
list.add("bb");
list.add("cc");
list.add("aa");
list.add("bb");
System.out.println("旧集合:"+list);
Set set = new HashSet(list);
List newList = new ArrayList(set);
System.out.println("新集合"+newList);
对比可见,set集合在实例化时可直接传递list参数。相比较利用arraylist遍历每一个元素,更加方便。