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

房产网站怎么推广宁波网站推广大全

房产网站怎么推广,宁波网站推广大全,汕头企业做网站,沈阳的网站建设一、HashSet 集合类 1、简介 HashSet 集合底层采取哈希表存储数据 底层是HashMap 不能使存取有序 JDK8之前的哈希表是数组和链表,头插法 JDK8之后的哈希表是数组、链表和红黑树,尾插法 2、存储元素 (1)如果要保证元素的唯…

一、HashSet 集合类

1、简介

HashSet 集合底层采取哈希表存储数据

底层是HashMap

不能使存取有序

JDK8之前的哈希表是数组和链表,头插法

JDK8之后的哈希表是数组、链表和红黑树,尾插法

2、存储元素

(1)如果要保证元素的唯一性,需要同时重写对象中的 hashCode 方法和 equals 方法

因为Object类的hashCode方法是调用底层的C++代码计算了一个随机数

(2)hashCode方法计算哈希值,equals方法比较元素

当添加对象的时候, 会先调用对象的hashCode方法计算出一个应该存入的索引位置, 查看该位置上是否存在元素

不存在:直接存

存在:调用equals方法比较内容

false:存

true:不存

3、底层原理细节(JDK8及以后)

(1)哈希扰动

底层会先计算出原始哈希值,设为 h

计算 h ^ ( h >> 16 ) 作为新的哈希值

以减少哈希冲突

(2)取模运算

用最终的哈希值对底层数组长度取模,得到索引位置

初始数组长度为16

计算时,并不是直接 H % 16

而是 ( 16 - 1 ) & H

对16取模相当于取后四位,和1111做与运算也是取后四位

与运算的效率高于取模运算

(3)数组扩容与树化操作

扩容数组的条件:

当数组中的元素个数到达了 16 * 0.75 (加载因子) = 12,扩容到原数组 2 倍的大小

链表挂载的元素超过了8 (阈值) 个 , 并且数组长度没有超过64

链表转红黑树的条件:

链表挂载的元素超过了8 (阈值) 个, 并且数组长度到达了64

二、LinkedHashSet 集合类

1、简介

存取有序、去重、无索引

2、原理

底层数据结构是依然哈希表,只是每个元素又额外的多了一个双链表的机制记录存储的顺序

三、几种单列集合的选择

1、元素可重复,用 ArrayList(最常用)

2、元素可重复,且增删多于查询,用LInkedList

3、元素不重复,用HashSet(最常用)

4、不重复且存取有序,用LinkedHashSet

5、想对元素排序,用TreeSet

四、可变参数

可变参数用在形参中可以接收多个数据

可变参数的格式:数据类型...参数名称

传输参数非常灵活,方便,可以不传输参数,可以传输1个或者多个,也可以传输一个数组

可变参数在方法内部本质上就是一个数组

注意:一个形参列表中可变参数只能有一个,可变参数必须放在形参列表的最后面

public static void main(String[] args) {System.out.println(add(1)); // 1System.out.println(add(1,2,3)); // 6int[] arr = {1,2,3,4};System.out.println(add(arr)); // 10
}public static int add(int... nums) {int sum = 0;for (int num : nums) {sum += num;}return sum;
}

五、Collections 集合工具类

Collections并不属于集合,是用来操作集合的工具类

public static <T> boolean addAll(Collection<? super T> c, T... elements)

给集合对象批量添加元素

public static void shuffle(List<?> list) 

打乱List集合元素的顺序

public static <T> int binarySearch (List<T> list,  T key)

以二分查找法查找元素

public static <T> void max/min(Collection<T> coll)

根据默认的自然排序获取最大/小值

public static <T> void swap(List<?> list, int i, int j)

交换集合中指定位置的元素

public static <T> void sort(List<T> list)

将集合中元素按照默认规则排序

public static <T> void sort(List<T> list,Comparator<? super T> c)

将集合中元素按照指定规则排序

六、Map 接口

1、Map 集合

Map 集合是一种双列集合,每个元素包含两个数据

Map 集合的每个元素的格式:key = value(键值对元素)

key (键):不允许重复

value (值):允许重复

键和值是一一对应的,每个键只能找到自己对应的值

key + value 这个整体称为“键值对”或者“键值对对象”,在Java中使用Entry对象表示

2、常用方法

Map是双列集合的顶层接口,它的功能是全部双列集合都可以继承使用的

put(K key,V value)

添加元素,若键已存在,则覆盖原值,返回被覆盖的值

remove(Object key)

根据键删除键值对元素

void clear()

移除所有的键值对元素

boolean containsKey(Object key)

判断集合是否包含指定的键

boolean containsValue(Object value)

判断集合是否包含指定的值

boolean isEmpty()

判断集合是否为空

int size()

集合的长度,也就是集合中键值对的个数

3、特点

双列集合底层的数据结构都是针对于键有效,和值无关

HashMap:键唯一(重写hashCode方法和equals方法)

TreeMap:键排序(实现comparable接口并重写compareTo方法)

LinkedHashMap:键唯一且存取有序

4、遍历方式

(1)通过键找值

get(Object key) 

根据键查找对应的值

Set<K> keySet() 

获取 Map 集合中所有的键

(2)通过键值对对象获取键和值

Set<Map.Entry<K,V>> entrySet() 

获取集合中所有的键值对对象

(3)通过 forEach 方法遍历

default void forEach

(BiConsumer<? super K, ? super V> action) 

遍历Map集合, 获取键和值

http://www.dtcms.com/wzjs/254108.html

相关文章:

  • 做网站分辨率多少钱北京seo怎么优化
  • 做网站费用上海seo平台是什么
  • 网站开发招标技术规范书各大网站收录查询
  • wordpress 另类加速优化百度seo
  • 做h5页面的网站口碑营销推广
  • 素材网站有哪些海外seo
  • 用discuz怎样做网站自建站模板
  • 网站开发流程图 最视频号的链接在哪
  • 个人 网站建设方案书 备案有哪些实用的网络推广方法
  • 购物网站建设课程设计报告上海有什么seo公司
  • 广州网站建设吧广东省自然资源厅
  • 营销型网站分类百度做免费推广的步骤
  • 济宁房地产网站建设seo排名优化培训怎样
  • 建设网站实验活动小结北京百度推广seo
  • 建站行业的利润网络搜索词排名
  • 征婚网站开发系统推广公司
  • 安徽网站建设价格好的seo公司营销网
  • 营销型企业网站建设板块设置百度学术搜索入口
  • 广东省网站免备案合肥seo排名收费
  • 深圳机票网站建设站长之家seo综合查询
  • 中国住房和城乡建设部招标网站图片外链生成工具在线
  • 青岛专业网站制作团队2023年7月疫情爆发
  • 一起做网店的类似网站优帮云查询数据云查询
  • 阿里云做淘宝客网站吗怎么建设自己的网站
  • 佛山做礼物的网站优化外包服务公司
  • 南平购物网站开发设计网站优化排名金苹果下拉
  • 百度网站体检百度广告位价格
  • 织梦可以做英文网站吗企业网站推广方案的策划
  • 工商局注册公司网站国外网站如何搭建网页
  • 怎样做网站seo优化外链屏蔽逐步解除