兰亭集势笔试题:用最优方法从LinkedList列表中删除重复元素

用运行速度最优的方法从LinkedList列表里删除重复的元素,例如A->B->BB->B->C,返回A->B->BB->C。

考试的时候没完全想明白,考完又想了想,其实还是蛮简单的。思路很简单:利用一个Set存放LinkedList中的元素,在迭代的过程中,判断当前元素是否在Set中出现过,如果出现过就删除,也就是说我们在遍历的过程中进行删除操作,所以这里要用到ListIterator,而不能用普通的Iterator。

代码如下:

private static LinkedList removeDuplicatedElements(LinkedList list) {
	HashSet set = new HashSet();
	Iterator iter = list.listIterator();
	while(iter.hasNext()){
		String str = (String)iter.next();
		if(!set.contains(str))
			set.add(str);
		else
			iter.remove();
	}
	return list;
}


原文地址:https://www.cnblogs.com/pangblog/p/3366038.html