文章目录
一、Set接口
1、基本概念
Set接口中的数据对象没有索引,存入的数据无顺序,并且元素不可重复。
2、Set主要方法摘要
boolean add(E e);
如果 set 中尚未存在指定的元素,则添加此元素(可选操作)。boolean addAll(Collection<? extends E> c);
如果 set 中没有指定 collection 中的所有元素,则将其添加到此 set 中(可选操作)。void clear();
移除此 set 中的所有元素(可选操作)。boolean contains(Object o);
如果 set 包含指定的元素,则返回 true。boolean containsAll(Collection<?> c);
如果此 set 包含指定 collection 的所有元素,则返回 true。boolean equals(Object o);
比较指定对象与此 set 的相等性。int hashCode();
返回 set 的哈希码值。boolean isEmpty();
如果 set 不包含元素,则返回 true。Iterator<E> iterator();
返回在此 set 中的元素上进行迭代的迭代器。boolean remove(Object o);
如果 set 中存在指定的元素,则将其移除(可选操作)。boolean removeAll(Collection<?> c);
移除 set 中那些包含在指定 collection 中的元素(可选操作)。boolean retainAll(Collection<?> c);
仅保留 set 中那些包含在指定 collection 中的元素(可选操作)。int size();
返回 set 中的元素数(其容量)。Object[] toArray();
返回一个包含 set 中所有元素的数组。
二、HashSet类
1、基本概念
HashSet底层是哈希,其表存入数据是无序的,而且不能重复,所以打印出来是乱序的。
2、HashSet主要方法摘要
boolean add(E e);
如果此 set 中尚未包含指定元素,则添加指定元素。void clear();
从此 set 中移除所有元素。Object clone();
返回此 HashSet 实例的浅表副本:并没有复制这些元素本身。boolean contains(Object o);
如果此 set 包含指定元素,则返回 true。boolean isEmpty();
如果此 set 不包含任何元素,则返回 true。Iterator<E> iterator();
返回对此 set 中元素进行迭代的迭代器。boolean remove(Object o);
如果指定元素存在于此 set 中,则将其移除。int size();
返回此 set 中的元素的数量(set 的容量)。
3、HashSet的去重机制
(1)去重机制的第一重,首先调用hashCode方法,检测地址是否一样;
去重机制的第二重,如果地址是一样的,则调用equals方法判断是否是同一个对象或者其子对象, 若果两个对象是同一对象,则比较值是否一致。
(2)Demo:用HashSet模拟生成双色球号码
public class Demo{
public static void main(String[] args) {
HashSet<Integer> hs = new HashSet<Integer>();
//六个红球的号码
while(hs.size() <= 6) {
hs.add((int)(Math.random() * 33 + 1));
}
//一个蓝球的号码
hs.add((int)(Math.random() * 16 + 1));
System.out.println("双色球号码为:" + hs + " ");
}
}
三、TreeSet类
1、基本概念
底层存储结构为树(二叉树、复杂树)。
2、TreeSet主要方法摘要
boolean add(E e);
将指定的元素添加到此 set(如果该元素尚未存在于 set 中)。boolean addAll(Collection<? extends E> c);
将指定 collection 中的所有元素添加到此 set 中。E ceiling(E e);
返回此 set 中大于等于给定元素的最小元素;如果不存在这样的元素,则返回 null。void clear();
移除此 set 中的所有元素。Object clone();
返回 TreeSet 实例的浅表副本。Comparator<? super E> comparator();
返回对此 set 中的元素进行排序的比较器;如果此 set 使用其元素的自然顺序,则返回 null。boolean contains(Object o);
如果此 set 包含指定的元素,则返回 true。Iterator<E> descendingIterator();
返回在此 set 元素上按降序进行迭代的迭代器。NavigableSet<E> descendingSet();
返回此 set 中所包含元素的逆序视图。E first();
返回此 set 中当前第一个(最低)元素。E floor(E e);
返回此 set 中小于等于给定元素的最大元素;如果不存在这样的元素,则返回 null。SortedSet<E> headSet(E toElement);
返回此 set 的部分视图,其元素严格小于 toElement。E higher(E e);
返回此 set 中严格大于给定元素的最小元素;如果不存在这样的元素,则返回 null。boolean isEmpty();
如果此 set 不包含任何元素,则返回 true。Iterator<E> iterator();
返回在此 set 中的元素上按升序进行迭代的迭代器。E last();
返回此 set 中当前最后一个(最高)元素。E lower(E e);
返回此 set 中严格小于给定元素的最大元素;如果不存在这样的元素,则返回 null。E pollFirst();
获取并移除第一个(最低)元素;如果此 set 为空,则返回 null。E pollLast();
获取并移除最后一个(最高)元素;如果此 set 为空,则返回 null。boolean remove(Object o);
将指定的元素从 set 中移除(如果该元素存在于此 set 中)。int size();
返回 set 中的元素数(set 的容量)。