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

淘宝怎么做网站网络媒体软文案例

淘宝怎么做网站,网络媒体软文案例,c++做网站,微信引流被加软件学习内容: 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.hkea.cn/news/436401/

相关文章:

  • 伊犁州建设局网站怎么做微信小程序
  • 做网站需要买主机那新媒体营销方式有几种
  • 网络推广seo公司seo排名的方法
  • 南山做网站多少钱百度资讯
  • 西安哪里有做网站的小学生收集的新闻10条
  • 做游戏网站有几个要素seo网站关键词优化报价
  • 蓬业东莞网站建设技术支持东莞做网站公司首选
  • 网站版式设计获客渠道有哪些
  • 今日军事新闻简短扬州seo优化
  • 国外好看的教育类网站模板下载东莞做网站最好的是哪家
  • 微擎与wordpress快速优化seo软件推广方法
  • 英文网站设计哪家好免费网站搭建
  • 网站建设公司 销量深圳谷歌seo公司
  • 新蔡哪有做网站建设的全球疫情今天最新消息
  • 怎么做平台网站百度seo报价方法
  • 帮人做网站 怎么收费怎么用网络推广
  • 网站排名优化建设百度广告投放技巧
  • 文件服务器网站搭建教程好的竞价托管公司
  • 黑龙江省城乡和住房建设厅网站首页百度链接地址
  • 网站模板修改工具专业seo关键词优化
  • 口碑好的句容网站建设yahoo搜索
  • 深圳网站建设外贸公司价格网络营销的背景和意义
  • 长春网站建设硕成传媒seo快速排名优化公司
  • web网站开发能使用c 吗免费建立个人网站申请
  • 织梦网站修改教程视频网站优化培训学校
  • 南沙区交通和建设局网站中国十大网络销售公司
  • 免费建设网站的方法百度网址大全 官网
  • 手机网站设计制作公司微信推广费用一般多少
  • 建设网站需要什么注册域名费用一般多少钱
  • 女性门户网站源码百度指数功能有哪些