数据结构之Set

来源:互联网 发布:美国登月真假 知乎 编辑:程序博客网 时间:2024/06/01 07:52

直接上JDK源码

Set<E>源代码

public interface Set extends Collection {    int size();    boolean isEmpty();    boolean contains(Object o);    Iterator iterator();    Object[] toArray();     T[] toArray(T[] a);    boolean add(E e);    boolean remove(Object o);    boolean containsAll(Collection c);    boolean addAll(Collection c);    boolean retainAll(Collection c);    boolean removeAll(Collection c);    void clear();    boolean equals(Object o);    int hashCode();    @Override    default Spliterator spliterator() {        return Spliterators.spliterator(this, Spliterator.DISTINCT);    }}

Collection<E>源代码

public interface Collection extends Iterable {    int size();    boolean isEmpty();    boolean contains(Object o);    Iterator iterator();    Object[] toArray();     T[] toArray(T[] a);    boolean add(E e);    boolean remove(Object o);    boolean containsAll(Collection c);    boolean addAll(Collection c);    boolean removeAll(Collection c);    default boolean removeIf(Predicate filter) {        Objects.requireNonNull(filter);        boolean removed = false;        final Iterator each = iterator();        while (each.hasNext()) {            if (filter.test(each.next())) {                each.remove();                removed = true;            }        }        return removed;    }    boolean retainAll(Collection c);    void clear();    boolean equals(Object o);    int hashCode();    @Override    default Spliterator spliterator() {        return Spliterators.spliterator(this, 0);    }    default Stream stream() {        return StreamSupport.stream(spliterator(), false);    }    default Stream parallelStream() {        return StreamSupport.stream(spliterator(), true);    }}

Iterable<E>源代码

public interface Iterable {    Iterator iterator();    default void forEach(Consumer action) {        Objects.requireNonNull(action);        for (T t : this) {            action.accept(t);        }    }    default Spliterator spliterator() {        return Spliterators.spliteratorUnknownSize(iterator(), 0);    }}

Set的实现类:

NavigableSet<E>, SortedSet<E>, AbstractSet, ConcurrentHashMap.KeySetView, ConcurrentSkipListSet, CopyOnWriteArraySet, EnumSet, HashSet, JobStateReasons, LinkedHashSet, TreeSet

这里只说常用的HashSetTreeSet

HashSet类

Java.util.HashSet类实现了Java.util.Set接口。
它不允许出现重复元素;
不保证和政集合中元素的顺序
允许包含值为null的元素,但最多只能有一个null元素。

TreeSet类

TreeSet描述的是Set的一种变体——可以实现排序等功能的集合,它在讲对象元素添加到集合中时会自动按照某种比较规则将其插入到有序的对象序列中,并保证该集合元素组成的读uixiangxulie时刻按照“升序”排列。


原创粉丝点击