第一种方法:直接遍历时,用hashset存放,判断是否存在环 第二种方法:使用快慢指针 ...
分类:
其他好文 时间:
2019-10-09 12:47:57
阅读次数:
81
HashSet特性: 无法保证元素顺序 允许null值 非线程安全 HashSet的底层通过HashMap实现的,而HashMap在1.7之前使用的是数组+链表实现,在1.8+使用的数组+链表+红黑树实现。其实也可以这样理解,HashSet的底层实现和HashMap使用的是相同的方式,因为Map是无 ...
分类:
其他好文 时间:
2019-10-08 12:27:52
阅读次数:
85
collection分类: list:有序可重复 set:无序不重复 HashSet 底层是Hashmap存储,每次容量使用到达75%时扩容 hash:散列表结构(数组+链表) TreeSet: 也是set的一种,结构是二叉树 常用方法和HashSet基本一样 比较使用了compareTo ...
分类:
编程语言 时间:
2019-10-07 13:05:56
阅读次数:
97
恢复内容开始 一、什么是Set? Set接口是Collection接口的子接口,是一种不允许重复元素的集合。 二、HashSet HashSet是Set的一个典型实现类,无序,不可重复,允许加入NULL,大多数时候使用Set就是使用这个类,HashSet按照Hash算法来存储元素,因此具备很好的存取 ...
分类:
其他好文 时间:
2019-10-06 13:10:03
阅读次数:
76
1.特点:HashSet 中元素不重复,容量为元素个数,自动增大。是一组值,是高性能的数学集合。 2.创建: (1)HashSet<类型> 集合名 = new HashSet<类型>(); //空集合 (2)HashSet<类型> 集合名 = new HashSet<类型>() { "马超", "关 ...
集合hashset底层用的是hashmap hash algorithm,HA是一类算法;hash table,HT是一种数据结构;hash functions,HF是支撑hash table的一类函数 HA:从不同的输入中,通过一些计算摘取出来一段数据值,来进行区分输入数据。(例:MD5);目的: ...
分类:
移动开发 时间:
2019-10-03 16:23:14
阅读次数:
98
这里要讨论这些常用的默认初始容量和扩容的原因是: 当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使效率大大降低。 加载因子的系数小于等于1,意指 即当 元素个数 超过 容 ...
分类:
其他好文 时间:
2019-10-01 20:54:03
阅读次数:
104
Set集合 Set集合中的元素是无序的(这里的无序指的是元素的放入顺序),另外Set集合中不能包含重复的元素。主要的Set集合类包括: 、`TreeSet EnumSet`。 HashSet类 集合利用哈希表存储数据,哈希表存储时会涉及到元素冲突问题,这里解决冲突使用的是拉链法,也就是将哈希码相同的 ...
分类:
编程语言 时间:
2019-09-30 21:35:04
阅读次数:
93
一般而言,数组最简单快捷的方法是直接利用HashSet的不重复的特性就可以做到,或者是遍历时利用List的contains 判断是否存在就可以去重了 如果是对象数组,对象的类需要 重写 equal 和 hashCode方法.。 但是面试题经常有数组去重的试题,如果在不使用hashSet 和 list ...
分类:
编程语言 时间:
2019-09-30 10:01:58
阅读次数:
86
为了勾起回忆,我画了一个常用集合类的结构关系图,话不多说,详见下图: 实际开发中ArrayList/HashMap/HashSet是三种最常用的集合工具类,通过其结构关系图也能清晰的了解他们的特性,所以,这里也将他们完整结构关系图贴出来,以便回忆! 1:ArrayList 2:HashMap 3:H ...
分类:
编程语言 时间:
2019-09-29 12:42:50
阅读次数:
80