JAVA SE(十五)—— JAVA 集合框架3(Set接口、HashSet类、TreeSet类)

一、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 的容量)。
发布了40 篇原创文章 · 获赞 0 · 访问量 359

猜你喜欢

转载自blog.csdn.net/baidu_27414099/article/details/104425103