JAVA 学习之集合

java集合:

集合和数组的区别是:
数组的长度固定;必须声明数据类型。
集合的长度可变;可以存放不同数据类型。

集合有哪些:
List、Set、Map是集合体系中的接口。List和Set都继承自Collection接口。

List、Set、Map接口的区别是:
List是一个接口,特点是List有序、可重复。实现类有ArrayList和LinkedList还有Vector。
Set同样也是一个接口,特点是Set无须、唯一。实现类有HashSet和TreeSet还有LinkedHashSet。
Map同样也是一个接口,特点是以键(key)值(value)对形式来存放元素;key唯一、value可重复。实现类有 HashMap和TreeMap还有HashtableMap。

LIST
ArrayList和LinkedList还有Vector的底层实现是:
ArrayList和Vector的底层实现是可变数组,特点是查询快,增删慢。
数组是一块连续的内存空间,通过索引来查询所以快。
LinkedList的底层实现是一个链表,特点是增删快,查询慢。

SET
HashSet和TreeSet还有LinkeHashSet的底层实现是:
HashSet底层实现是哈希表,特点是可以保证唯一。HashSet的add方法其实是调用的是Map的put方法,把元素当作键,值都是Object,存放key的时候先判断哈希值是否存在,如果不存在直接存储,如果存在则继续用equals判断其元素对象是否存在,如果存在不存储,如果不存在则存储。
TreeSet底层是二叉树,特点是可以按照一定规则来排序;保证唯一性,必须要实现Comparable接口,来定义排序规则,实现方法中如果返回0则是重复元素,如果是正数则往右放,如果是负数则往左放。
LineHashSet的底层实现是链接和哈希表。特点是有序,唯一。由链表保证元素有序;由哈希表保证唯一。

MAP
HashMap和TreeMap 还有HashtableMap的底层是:
HashMap的底层实现是哈希表,可以保证元素的唯一性,只针对键。
TreeMap的底层实现是二叉树,可以保证元素的唯一性及按照一定规则进行排序,只针对键。
HashtableMap的底层实现是同HashMap一样是哈希表。

HashMap和HashtableMap的区别是:
HashMap是线程不安全的,所以效率高;键和值允许为NULL。
HashtableMap是线程安全的,所有效率低;键和值不允许为NULL。

集合的线程:
ArrayList、LinkedList、HashSet、TreeSet、LinkedHashSet HashMap、TreeMap是线程不安全的。
Vector和HahstableMap是线程安全的。

Aaarys转集合不能改变长度。

实现Comparable有几种方法:
三种:
匿名内部类、自定义类实现、在存储对象上实现。

Iterator迭代器:
Iterator迭代器遍历集合时不能修改集合元素。想要修改集合元素,用集合本身遍历集合修改集合;也可以用迭代器迭代(ListIterator)用迭代器修改集合元素。添加集合元素时,用迭代器迭代到那里就添加到哪里;用集合本身遍历集合添加元素时是添加到集合的末尾。

equals默认判断的是地址值 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是一只小蚂蚁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值