Java常见集合框架(九):Set之Set、AbstractSet
来源:互联网 发布:观测数据定义 编辑:程序博客网 时间:2024/06/07 05:16
Set结构图
Set
public abstract interface Set extends Collection
- 不包含重复元素的 collection
- 重写了equals和hashCode方法
- 无序
声明方法如下:
'''返回 set 中的元素数(其容量)。''' public abstract int size(); /*如果 set 不包含元素,则返回 true。*/ public abstract boolean isEmpty(); ''' 如果 set 包含指定的元素,则返回 true。''' public abstract boolean contains(Object paramObject); /* 返回在此 set 中的元素上进行迭代的迭代器。*/ public abstract Iterator<E> iterator(); /* 返回一个包含 set 中所有元素的数组。*/ public abstract Object[] toArray(); /* 返回一个包含此 set 中所有元素的数组;*/ public abstract <T> T[] toArray(T[] paramArrayOfT); '''如果 set 中尚未存在指定的元素,则添加此元素。''' public abstract boolean add(E paramE); '''如果 set 中存在指定的元素,则将其移除。''' public abstract boolean remove(Object paramObject); /* 如果此 set 包含指定 collection 的所有元素,则返回 true。*/ public abstract boolean containsAll(Collection<?> paramCollection); /* 如果 set 中没有指定 collection 中的所有元素,则将其添加到此 set 中。*/ public abstract boolean addAll(Collection<? extends E> paramCollection); /* 仅保留 set 中那些包含在指定 collection 中的元素。*/ public abstract boolean retainAll(Collection<?> paramCollection); /* 移除 set 中那些包含在指定 collection 中的元素。*/ public abstract boolean removeAll(Collection<?> paramCollection); /* 移除此 set 中的所有元素。*/ public abstract void clear(); /* 比较指定对象与此 set 的相等性。*/ public abstract boolean equals(Object paramObject); /* 返回 set 的哈希码值。*/ public abstract int hashCode();
AbstractSet
public abstract class AbstractSet extends AbstractCollection implements Set
- 此类并没有重写 AbstractCollection 类中的任何实现
- 仅仅添加Set接口中的 equals 和 hashCode 的实现。
实现方法如下:
public boolean equals(Object o) :比较指定对象与此 set 的相等性。
public boolean equals(Object o) { if (o == this) {//判断是否是自身 return true; } if (!(o instanceof Set))//判断对象类型 return false; Collection c = (Collection) o; if (c.size() != size())//比较容量大小 return false; try { return containsAll(c);//比较容器中集合元素是否全部相同 } catch (ClassCastException localClassCastException) { return false; } catch (NullPointerException localNullPointerException) { } return false; }
public int hashCode() :返回此 set 的哈希码值。
public int hashCode() { int h = 0; Iterator<E> i = iterator();//遍历容器元素 while (i.hasNext()) { E obj = i.next(); if (obj != null) h += obj.hashCode();//对所有元素哈希码值求和 } return h;//此set的哈希码值为容器中全部元素的哈希码值的和 }
public boolean removeAll(Collection c) : 从此 set 中移除包含在指定 collection 中的所有元素。
public boolean removeAll(Collection<?> c) { //Objects.requireNonNull(c); jdk1.8中新增非空校验 boolean modified = false; /*下面之所以判断元素数大小,为了遍历的集合是最小的一个优化*/ if (size() > c.size()) { for (Iterator<?> i = c.iterator(); i.hasNext(); ) modified |= remove(i.next()); } else { for (Iterator<?> i = iterator(); i.hasNext(); ) { if (c.contains(i.next())) { i.remove(); modified = true; } } } return modified; }
阅读全文
0 0
- Java常见集合框架(九):Set之Set、AbstractSet
- Java常见集合框架(十):Set之TreeSet、HashSet
- Java常见集合框架(十一):Set之LinkedHashSet、CopyOnWriteArraySet
- JAVA集合框架之set
- Java集合框架之Set
- Java集合框架之Set
- Java集合框架之set
- Java集合之AbstractSet
- Java常见集合框架(十三):Set总结
- java基础-- 集合框架 之 Set集合
- Java常见集合框架(十二):Set之ConcurrentSkipListSet、EnumSet
- 集合框架之Set
- java集合框架Set
- Java集合框架------Set
- Java集合总结之Set整体框架
- Java基础--集合框架之Set
- Java 学习之集合框架---Set
- Java-集合框架Collection之Set(一)
- 78、java递归
- 2017中国物联网安全峰会即将于11月在沪举办!
- First Show!
- 多数据源方式在java中的使用postgresql数据库
- JS—按钮颜色切换
- Java常见集合框架(九):Set之Set、AbstractSet
- java的基本语言元素--常量/变量/基本数据类型
- springboot(八):RabbitMQ详解
- Nginx日志访问统计
- 微信企业号开发:企业支付get_brand_wcpay_request:fail当前页面的URL未注册
- C语言中break,continue,goto,return语句区别
- hadoop实战之hdfs常用操作工具类
- Android Studio插件下载页面和 最完整Android Studio插件整理
- saltstack的常用操作(一)——salt-master和salt-minion 的安装和链接