100分求个在LinkedList列表里删除重复的元素的函数
已知一个LinkedList列表里有重复元素:"N" "AA" "N" "C" "AA" "N"
最后的结果:"N" "AA" "C"
要删除其中重复的元素.不要用Set,不要用toArray方法.
用跌代器实现(Iterator\listIterator等等都可以)
我实在是想不出来了,求个算法
请CSDN的朋友指点指点.
import java.util.*;public class RemoveDuplicate { public static void main(String[] args) { LinkedList<String> dL = new LinkedList<String>(); dL.add("N"); dL.add("AA"); dL.add("N"); dL.add("C"); dL.add("AA"); dL.add("N"); removeDuplicates(dL); System.out.println(dL); } public static void removeDuplicates(LinkedList<String> dl) { }}public static void RemoveDuplicates(LinkedList<String> dl) { String s1, s2; int count = 0; while (count < dl.size()) { Iterator<String> it1 = dl.iterator(); s2 = dl.get(count); int i = 0; for (s1 = it1.next(); it1.hasNext(); s1 = it1.next()) { if (i != count && s2.equals(s1)) { dl.set(count, s2.concat("toBeRemoved")); } i++; } count++; } Iterator<String> it1 = dl.iterator(); while (it1.hasNext()) { if (it1.next().endsWith("toBeRemoved")) { it1.remove(); it1 = dl.iterator(); } } }
[解决办法]
没办法,不让排序很扯淡。Set就是利用了排序才快的。
[解决办法]
自己写一个Hash表算了
老实说这个要求很无理
自己都用了List,还不给别人用Set
[解决办法]
是的,即使使用二分查找算法,也得先排序
[解决办法]
public static void removeDuplicates(LinkedList <String> dl) {
int len = dl.size();
for (int i = 0; i < len; i++) {
String item = dl.get(i);
for (int j = i+1; j < len; j++) {
if(item.equals(dl.get(j))){
dl.remove(j);
len --;
}
}
}
}