当前位置: 首页 > news >正文

镇江房产网站建设大学生做兼职的网站有哪些

镇江房产网站建设,大学生做兼职的网站有哪些,2017做哪些网站能致富,夜晚必备的直播软件学习内容: Set集合概述Set集合实现—HashSet LinkedHashSet和TreeSet 学习产出: Set集合概述 Set中不存在值相同的节点。将两个对象e1.equals(e2),如果结果为true,或者(e1e2)内存地址相等,就认为两个对象…

学习内容:

  1. Set集合概述
  2. Set集合实现—HashSet
  3. LinkedHashSet和TreeSet

学习产出:

Set集合概述

Set中不存在值相同的节点。将两个对象e1.equals(e2),如果结果为true,或者(e1==e2)内存地址相等,就认为两个对象相等。
这也是Map集合中判断两个对象是否相同的标准,下面是HashMap集合判断Key键对象是否一致的源码

//如果两个key键的地址相同或者是equals方法返回trueif (p.hash == hash &&((k = p.key) == key || (key != null && key.equals(k))))

需要知道的是,java集合框架中很多Set的内部结构都是依赖于对应的map实现的。
同样Set集合也有几个重要的接口和抽象类

java.util.SortedSet接口

一般情况下,Set集合中的数据对象是无序的,是因为HashSet的内部结构决定的—HashSet集合的内部结构和HashMap集合相同。HashSet也实现了java.util.SortedSet接口,所以提供了两种比较方法,一个是根据key的信息,在这种情况下,key必须实现Comparable接口,第二种就是通过集合实例化时传入的comparator比较器进行比较。如果两种都不能用会抛出异常(ClassCastException)
注意java.util.Comparator和java.util.Comparable接口的区别

  • 实现Comparator接口的类类似一个工具,可以对传入的两个参数进行比较,所以该接口中需要被实现的compare(T o1, T o2)有两个不同的参数
  • Comparable该接口可以解释为类对象本身就是可以比较的,也就是说实现该接口的类本身就是可以进行比较的,所以compareTo(T o)只有一个入参

javaNavigableSet接口

该接口是SortedSet的子级接口。作用是在满足集合有序的前提下,可以参照指定的数据对象进行集合中各数据对象的读写工作,例如可以参照已经有的X,查询所有权值比X大或者小的数据对象
源码如下

public interface NavigableSet<E> extends SortedSet<E> {//返回小于指定对象的值,并且最大的数据对象,没有返回空E lower(E e);//和lower相同,不过是小于等于E floor(E e);//大于或者等于E ceiling(E e);//大于E higher(E e);//返回并且删除最小的数据对象E pollFirst();//返回删除最大的E pollLast();//返回一个迭代器Iterator<E> iterator();//返回这个有序集合的反序集合NavigableSet<E> descendingSet();//反序迭代器Iterator<E> descendingIterator();//返回两个对象中间的集合,两个boolean是是否包含from和toNavigableSet<E> subSet(E fromElement, boolean fromInclusive,E toElement,   boolean toInclusive);//小于to的集合对象,inclusive是否包含的toNavigableSet<E> headSet(E toElement, boolean inclusive);//大于NavigableSet<E> tailSet(E fromElement, boolean inclusive);//这个默认是前闭后开SortedSet<E> subSet(E fromElement, E toElement);SortedSet<E> headSet(E toElement);SortedSet<E> tailSet(E fromElement);}

需要注意的是如果我们向这个子集添加元素,该元素也会添加到父集合中,但是如果向子集添加的元素超过子集的范围会抛异常。

java.util.AbstractSet抽象类

作用和AbstractMap类似,提供了一些公用方法

public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E> {protected AbstractSet() {}//如果两个内存地址相同,则认为相同,如果不是同一种set对象返回false,如果容量不同返回false//集合中所有对象存在当前集合中返回true,其他情况返回falsepublic 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 | NullPointerException unused) {return false;}}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;}public boolean removeAll(Collection<?> c) {Objects.requireNonNull(c);boolean modified = false;if (size() > c.size()) {for (Object e : c)modified |= remove(e);} else {for (Iterator<?> i = iterator(); i.hasNext(); ) {if (c.contains(i.next())) {i.remove();modified = true;}}}return modified;}}

Set集合实现—HashSet

需要知道的是HashSet是基于HashMap原理进行工作的,HashSet集合的元素不是有序的

主要属性

    //存储数据的map,但是并不参与集合序列化的过程private transient HashMap<E,Object> map;//当题解数据时,每一个常量都用该常量填充private static final Object PRESENT = new Object();

构造方法

    public HashSet() {map = new HashMap<>();}//参照一个指定集合进行初始化,初始化容量是 源集合容量的175%和16取大的public HashSet(Collection<? extends E> c) {map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));addAll(c);}//指定初始容量和负载因子public HashSet(int initialCapacity, float loadFactor) {map = new HashMap<>(initialCapacity, loadFactor);}//指定初始化容量,负载因子默认为0.75public HashSet(int initialCapacity) {map = new HashMap<>(initialCapacity);}HashSet(int initialCapacity, float loadFactor, boolean dummy) {map = new LinkedHashMap<>(initialCapacity, loadFactor);}

LinkedHashSet和TreeSet

LinkedHashSet继承HashSet集合,而TreeSet内部结构和TreeMap内部结构相同,所以TreeSet内部也是红黑树
LinkedHashSet十分简单不在介绍

TreeSet集合

在这里插入图片描述主要属性和构造方法

 private transient NavigableMap<E,Object> m;// Dummy value to associate with an Object in the backing Mapprivate static final Object PRESENT = new Object();//这个就是以来的ma集合,看似是NavigableMap抽象类,实际上TreeMap集合private transient NavigableMap<E,Object> m;//该构造方法访问级别为包保护,外部调用者无法直接调用TreeSet(NavigableMap<E,Object> m) {this.m = m;}public TreeSet() {this(new TreeMap<>());}//传入一个比较器,并且为内部的TreeMap导入这个比较器public TreeSet(Comparator<? super E> comparator) {this(new TreeMap<>(comparator));}//参照其他集合构造初始化public TreeSet(Collection<? extends E> c) {this();addAll(c);}//参照一个实现了SortedSet的集合public TreeSet(SortedSet<E> s) {this(s.comparator());addAll(s);}

TreeSet集合主要依赖方法

 public boolean add(E e) {return m.put(e, PRESENT)==null;}public boolean remove(Object o) {return m.remove(o)==PRESENT;}public void clear() {m.clear();}public E first() {return m.firstKey();}/*** @throws NoSuchElementException {@inheritDoc}*/public E last() {return m.lastKey();}public NavigableSet<E> subSet(E fromElement, boolean fromInclusive,E toElement,   boolean toInclusive) {return new TreeSet<>(m.subMap(fromElement, fromInclusive,toElement,   toInclusive));}
http://www.15wanjia.com/news/180560.html

相关文章:

  • 西安博威建设工程有限公司招聘网站jsp网站建设项目实战总结
  • 瑞安公司做网站wordpress导航读取
  • 新加坡的网站域名国内做seo公司简介
  • 佛山外包网站建设做五金行业的外贸网站
  • 做移动网站快速排名网页制作的软件
  • 做图骂人的图片网站网站留言系统 提交没反应
  • 旅游景区宣传软文四川网站建设seo
  • python做的网站有哪些购买平台有哪些
  • 新服务器做网站佛山网页设计模板
  • 凡客诚品网站特点网站设计电商运营
  • html5 网站自适应做网站一定要买
  • app 网站 区别wordpress只让文章标题
  • 国外购物网站推荐漯河商城网站建设
  • 优惠券网站开发哪家好男装网站模板演示
  • 站长工具app江苏网站建设要多少钱
  • 做网站的的广告词菏泽公司做网站
  • 如何通过c语言来做网站杭州网站优化服务
  • 深圳网站建设怎么亚洲建行网站打不开
  • 网站淘宝客 难做怎么注册地理位置
  • 怎样进网站空间河南做网站公司排名
  • 上海网站建设服务多少钱手机网页设计用什么软件
  • 湘潭学校网站建设 x磐石网络wordpress 开放注册
  • 网站设计的流程简答题搭建网站合同
  • 珠海高端网站制作百度收录的网页数量
  • 天津市网站建设管理办法王野天女
  • 江油移动网站建设网站开发的在淘宝上是什么类目
  • 企业网站建设费用价格佛山网站建设哪个好点
  • 网站设计素材网站返回邢台最新规定
  • 临沂百度网站推广jsp做网站的书
  • 做房地产需要做网站吗免费的招聘平台有哪些