栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Day

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Day

ArrayList集合的底层原理
1. 当创建ArrayList集合的时候,代码底层会创建一个长度为0的数组
	ArrayList list = new ArrayList<>();
2. 当往ArrayList集合对象中添加第一个元素的时候,底层的数组会重新创建,新创建的数组长度是10
	list.add(e对象); //第一次添加元素
3. 往ArrayList集合中添加第11个元素的时候,底层的数组会重新创建,新创建的数组长度是15	
	list.add(e对象); //第十一次添加元素
规律: 每当集合底层数组容量不够的时候,创建的新数组长度为老数组长度的1.5倍 
	// newLength = oldLength + (oldLength >> 1) 
	
往ArrayList添加第1024个元素的时候,请问底层数组的长度是多少? 1234
    
ArrayList集合的底层源码分析

数据结构
代码的本质 : 数据结构 + 算法;
集合的本质 : 数据结构 + 数组;
栈和队列

数组和链表 数组

单向链表结构

双向链表结构

Set集合
Set 是接口;
1. 长度可变
2. 只能存引用数据类型(存基本数据类型要存包装类)
3. 元素无索引
4. 元素不可以重复
5. 元素存取无序

创建容器
	Set 集合名 = new 实现类();
增删改查
	增:	boolean add(E e)  : 往集合中添加元素,返回元素是否添加成功
	删:  
		boolean remove(Object o) : 按照传入元素值删除集合中的元素,返回删除是否成功
		void clear():清空集合中所有的元素
	改: 没有索引所以没有set方法
    查: 没有索引所以没有get方法
    	 boolean contains(Object o) : 是否包含
    	 boolean isEmpty()  : 是否为空集合
    	 int size() : 查询 集合中元素的个数和集合的长度
遍历:
	1. 转数组 : 来自于Collection
		Object[] toArray();
	2. 普通迭代器 : 来自于Collection
		Iterator iterator();
	3. 增强for 
HashSet集合
HashSet集合 : 底层数据结构是Hash表的Set集合实现!!
    
创建容器
	HashSet 集合名 = new HashSet();
增删改查
	增:	boolean add(E e)  : 往集合中添加元素,返回元素是否添加成功
	删:  
		boolean remove(Object o) : 按照传入元素值删除集合中的元素,返回删除是否成功
		void clear():清空集合中所有的元素
	改: 没有索引所以没有set方法
    查: 没有索引所以没有get方法
    	 boolean contains(Object o) : 是否包含
    	 boolean isEmpty()  : 是否为空集合
    	 int size() : 查询 集合中元素的个数和集合的长度
遍历:
	1. 转数组 : 来自于Collection
		Object[] toArray();
	2. 普通迭代器 : 来自于Collection
		Iterator iterator();
	3. 增强for 
哈希表

HashSet集合去重原理
HashSet集合去重原理 : 
	按照对象的hashCode()方法和equals()方法的编写逻辑进行去重
	
	默认情况 : 类中没有重写hashCode()方法和equals()方法,此类对象存储到HashSet集合中按照元素的地址值去重
	如果说想按照对象的属性值进行去重 : 请自动重写hashCode()方法和equals()方法

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/732328.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号