我的列表中有重复的数据,我知道 Set 不允许重复,LinkedHashSet 会给出排序顺序,它在内部会如何工作,有人可以解释一下吗?
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
public class RemoveDuplicate {
public static void main(String[] args) {
List<String> sourceList = new ArrayList<String>();
sourceList.add("object1");
sourceList.add("object2");
sourceList.add("object2");
sourceList.add("object3");
sourceList.add("object4");
sourceList.add("object2");
List<String> newList = new ArrayList<String>(new LinkedHashSet<String>(
sourceList));
Iterator<String> it = newList.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
}
上面的代码显示列表没有重复并且有排序顺序。 LinkedHashSet 内部如何工作有人能解释一下吗?
最佳答案
LinkedHashSet
扩展 HashSet
。查看HashSet源码here和 here
HashSet uses the internal map to store your value as key, and if key is already exist(means you value already in set) then the call leaves the set unchanged and returns
false
.
请参阅 HashSet
中的以下代码:
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
关于java - 谁能解释一下它是如何工作的,而没有按排序顺序重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29792138/