java夯实基础系列:集合

容器

#一.引入

为什么需要集合?
数组存在两个缺陷:
数组长度难以扩充
数组中元素类型必须相同
容器可以弥补数组的这两个缺陷

#二.集合体系

Java的所有的集合体系都是实现了Collection接口,所有通用的 Collection 实现类(通常通过它的一个子接口间接实现 Collection)应该提供两个“标准”构造方法:一个是 void(无参数)构造方法,用于创建空 collection;另一个是带有 Collection 类型单参数的构造方法,用于创建一个具有与其参数相同元素新的 collection。add方法的参数类型是Object,以便于利用多态特性接收任意类型的对象,集合中存储的都是对象的引用(地址)。在Collection下又分三个子体系: List、Set、Map体系。

#三.Collection接口

##1.最共性的方法:即Collection接口中的方法

在这里插入图片描述

分类说明:

添加:
add()
addAll()

删除:
remove()
removeAll()

判断:
contains()
containsAll()

获取:
iterator()
size()

集合变数组:
toArray()

##2.Iterator迭代器

#四.List(有序、可重复)

##1.ArrayList

使用的数据结构是数组,线程是不安全的,查找速度快,增删速度慢

因为List继承了Collection接口,ArrayList又实现了List接口,因此ArrayList具备Collection、List中的所有方法,只有它自己个性的方法,请查API文档。

##2.LinkList

使用的数据结构是链表,线程不安全的,查找速度慢,增删速度快

因为List继承了Collection接口,LinkList又实现了List接口,因此LinkList具备Collection、List中的所有方法,只有它自己个性的方法,请查API文档。

##3.Vector

使用的数据结构是数组,线程安全的,查找速度快,增删速度慢,被ArrayList替代了

因为List继承了Collection接口,Vector又实现了List接口,因此Vector具备Collection、List中的所有方法,只有它自己个性的方法,请查API文档。

#五.Set(无序、不可重复)

重复不重复指的是相同的对象
重复叫做:可以添加相同的对象,就是equal方法返回值一样

##1.HashSet

数据结构是哈希表,线程是非同步的。保证元素唯一性的原理:判断元素的hashcode值是否相同。如果相同,还会继续判断元素的equals方法,是否为true。

可以根据自己的目的去重写这两个方法。

因为Set继承了Collection接口,HashSet又实现了Set接口,因此HashSet具备Collection、Set中的所有方法,只有它自己个性的方法,请查API文档。

##2.TreeSet

底层数据结构是二叉树,保证元素的唯一性依据是:compareTo方法return 0.

TreeSet排序的第一种方式:让元素自身具备比较性,元素需要实现Comparable接口,覆盖compareTo方法。

TreeSet的第二种排序方式:当元素自身不具备比较性时,或者具备的比较性不是所需要的,这时就需要让集合自身具备比较性。

因为Set继承了Collection接口,TreeSet又实现了Set接口,因此TreeSet具备Collection、Set中的所有方法,只有它自己个性的方法,请查API文档。

#六.Map

Map存储的是键值对,一对一的存,键不能重复。

##1.HashMap

底层使用的数据结构是哈希表,线程不安全的,可以存储null键,null值

HashMap保证键唯一性的原理和HashSet一样

出现相同的键,会把以前的覆盖掉,而不是删除掉

如果你单独只是存键值对的话,没有其他功能,用hashmap就可以了。
但是你想排序的话,用treemap

##2.TreeMap

底层使用的数据结构是二叉树,线程不安全的。

排序的原理和TreeSet一样(方法也是几乎完全一样的)
是通过键来排序的

#七.两个工具类:Arrays、Collection

Arrays

此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含了一个允许将数组作为列表来查看的静态工厂。除非特别注明,否则如果指定数组引用为null,则此类中的方法都会抛出NullPointException。

Collections(集合的工具类)

Collection接口的实现类,如ArrayList、LinkedList本身并没有提供排序,倒置,查找等方法,这些方法是由Collections类来实现的,该类有很多public static方法,可以直接对Collection接口的实现类进行操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值