jdk 1.9之前与collection无差别1.9之后和list一样扩充了很多方法,新增of()方法;
元素不重复
主要子类:HashSet,TreeSet
无法使用get()方法获取指定索引数据的,
Module java.base
Package java.util
Interface Set<E>
-
Type Parameters:
E
- the type of elements maintained by this setAll Superinterfaces:
Collection<E>
,Iterable<E>
All Known Subinterfaces:
EventSet
,NavigableSet<E>
,ObservableSet<E>
,ObservableSetValue<E>
,SortedSet<E>
,WritableSetValue<E>
All Known Implementing Classes:
AbstractSet
,ConcurrentHashMap.KeySetView
,ConcurrentSkipListSet
,CopyOnWriteArraySet
,EnumSet
,HashSet
,JobStateReasons
,LinkedHashSet
,ReadOnlySetProperty
,ReadOnlySetPropertyBase
,ReadOnlySetWrapper
,SetBinding
,SetExpression
,SetProperty
,SetPropertyBase
,SimpleSetProperty
,TreeSet
public interface Set<E> extends Collection<E>
HashSet:实现接口Set,不重复且无
序的,利用HashCode和equals共同判断是否是相同的元素,在java中元素重复判断均是由HashCode和equals完成,除tree(treeSet)等排序外
Module java.base
Package java.util
Class HashSet<E>
- java.lang.Object
-
- java.util.AbstractCollection<E>
-
- java.util.AbstractSet<E>
-
- java.util.HashSet<E>
-
Type Parameters:
E
- the type of elements maintained by this setAll Implemented Interfaces:
Serializable
,Cloneable
,Iterable<E>
,Collection<E>
,Set<E>
Direct Known Subclasses:
JobStateReasons
,LinkedHashSet
public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, Serializabl
TreeSet:实现Tree接口,无重复且升序排列,当保存的元素是一个类时必须继承接口comparable接口并覆写compareTo方法且比较所有属性大小,否则将会使得部分属性相同的数据是为一样而删除,利用comparable接口完成重复判断。
Module java.base
Package java.util
Class TreeSet<E>
- java.lang.Object
-
- java.util.AbstractCollection<E>
-
- java.util.AbstractSet<E>
-
- java.util.TreeSet<E>
-
Type Parameters:
E
- the type of elements maintained by this setAll Implemented Interfaces:
Serializable
,Cloneable
,Iterable<E>
,Collection<E>
,NavigableSet<E>
,Set<E>
,SortedSet<E>
public class TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>, Cloneable, Serializable