导图社区 java
这是一个关于java的思维导图
网络编程,分享了OSI模型、TCP/IP五层模型、常用网络协议、网络常用命令、网络编程的知识,有兴趣的可以看看哟。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
集合和泛型
Collection
list
特点:
可以装入重复元素
存入顺序和读取顺序是一致的
常用集合:
ArrayList
顺序存储,线程不安全
LinkedList
链式存储,线程不安全
Vector
顺序存储,线程安全
常用方法:
list.set(index,value);
list删除问题:
倒序遍历,使用迭代器遍历使用iterator.remove();而不是list.remove();
list初始化长度和扩容:
ArrayList底层实现使用Object[]
初始化长度为10,当添加的元素大于10,会进行扩容,生产新的数组,会把老数组的内容拷贝到新数组中
int newCapacity = oldCapacity + (oldCapacity >> 1);
List list = new ArrayList(1000);对数组进行初始化空间的设置
set
没有重复元素
无序的(插入的顺序与读取的顺序可能不一致,特例:LinkedSet)
常用集合类:
HashSet
顺序存储结构
HashSet的去重功能,HashSet实际上使用的是HashMap,HashSet添加的值,实际上存入的是HashMap的key的位置,由HashMap的key的是一性的,所以保证HashSet的值是唯一的
Treeset
可以实现排序功能
LinkedSet
链式存储结构 存入和读取顺序一致
set集合中加入对象,怎么确保不加入重复:
重写hashCode和equals方法
加入set集合如何判定是同一个对象?
先通过hashCode,不一样说明不是同一个对象,hashCode值一样, 还需要继续通过equals进行比较,假如返回true,说明是同一个对 象,返回值false,说明不是同一个对象仍旧可以加入
注意:
Set set = new HashSet();set只能调用Set中定义的方法,子类特有的方法不能调用 解决办法:把Set换成HashSet
特点:存入单列值
常用方法
子主题
Map
存入双列值
key—value 键值对
key是唯一的,不重复的
HashMap
线程不安全
TreeMap
针对key排序
LinkedHashMap
HashTable
线程安全
hash问题
hash哈希,散列,是一种不可逆的算法
hash在集合中应用HashSet和HashMap
优点:查询效率比较高,时间复杂度o(1);
缺点:哈希冲突
如何解决哈希冲突:
优化哈希算法,使散列更均匀
通过扩容的方式增加散列的位置
当产生哈希冲突可以使用链表