java数据结构小结

新入职场才大半年,给自己总结下之前学过的java知识,如有错误欢迎指正,不胜感激~

Collection:是Iterable实现类
java集合类是Iterable实现类的原因:Iterable内部封装了Iterator接口,实现了Iterable就能使用Iterator了。Iterator内部的next()和hashNext()方法,是依赖于迭代器的当前迭代位置的,如果Collection实现了Iterator,那么也会引入迭代指针,当在不同方法中传递时,
,由于当前迭代位置不可预测,next()的值变得不可预测。除非给Iterator添加一个reset()方法重置迭代位置,但是即使这样,Collection也只能存在一个迭代位置。而Iterable每次调用都会返回一个从头开始的迭代器,多个迭代器互不不影响
List:有序的Collection,用户能够精准地控制插入的元素,类似于数组,是一个列表,可根据下标读写元素
ArrayList:基于动态数组,实现了Collection和List,查询和插入元素比较方便快捷。插入或删除元素,后面的元素的位置都会发生变动。ArrayList的空间浪费主要是列表末尾会留一定空间

LinkedList:插入和删除元素的开销都是一样。LinkedList的空间浪费主要是每一个元素都会有一定的空间浪费

当需要在后面添加或删除数据,并且随机地访问数据,使用ArrayList,当在前面或中间添加或删除数据,并且按顺序地访问数据时,使用LinkedList。
Set:无序,不可重复,是集。
HashSet:按照哈希算法快速存取对象
TreeSet:实现了SortedSet接口,能够进行排序

Map:基于键值对的形式,值可以重复,键是唯一。下面几个实现类的主要区别是线程,同步,速度这几个方面
HashMap :可以有null,是非同步的。put存,get取,put时,调用hashCode()方法确定bucket的位置并存储Entry对象。如果hashCode值相等,则调用equals方法判断是否有这个值,若有,则更新值
HashTable :不可以有null,是同步的,线程安全,多线程可以共享一个HashTable
LinkedHashMap :put进去的时候,键值对的位置不会发生变化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值