java集合类_Java集合类总结

前言:

这篇准备好好总结一下Java的集合类,在顺便带上Arrays,把这几者之间的关系说清楚,在java.util包中提供了一些集合类,这些集合类又被称作容器,这时候可能我们就联想到了就是Arrays,他们之间不同的地方就是:数组的长度是固定的,集合的长度是可变的;数组是用来存贮基本类型的数据,集合用来存放对象的引用,最常用的大家也都是知道,List集合,Set集合,还有Map集合。这其中呢List集合和Set集合继承了Collection接口,他们的关系如下图,按自己的理解这样,要是有不正确的地方告诉我哈:

aa135726dfeb227b21d0b92159f65ef8.png

下面这样是更细致完整点的,谢谢同行:

b0401f4208213872b3c27397d2128280.png

Collection接口:

它是层级结构中根接口,构成它的单位称为元素。一般情况下不会直接使用它,上面的结构图我们也可以看出,List和Set方法都是继承与它的,所以也就继承它的方法,常见的我们下面也做了总结:

f05ba48cc8b64de1531a527482859b40.png

下面是上面代码的打印日志:

29e0b27d950ef42cf240e0be703577e2.png

List接口:

List是继承与Collection的,所以Collection的方法List都可以用,不过有两个方法特别注意的:

(1): get(int index) 获得指定位置处的元素

(2): set(int index , Object obj) 将集合中指定位置处的对象修改为对象obj. 尤其这个方法,我刚开始在想Javay应该不可能不会有替代某位置元素的方法,找了许久,但没想到是这个set方法。

List接口的常用两个实现类,一个是ArrayList,一个是LinkedList,一个一个说说:

ArrayList: 可变的数组,允许保存所有的元素,当然就包括null。它的优点是:可以快速的随机访问index处的对象 缺点是:指定位置插入删除是速度慢

LinkedList:采用链表结构保存对象,它的优缺点和上面我们说的ArrayList的也就相反了。

看看ArrayList最基本的使用:

70a46c03333fc85b942cb45daaa3603f.png

下面是打印的结果:

94a674fc8219b5c791b38f1478a6e5d6.png

Set接口:

Set结合中的对象不按照特定的方法排序,只是简单的把对象加入到集合中,但是很重要的一点就是Set集合中不能包含重复的对象,Set和List一样是继承自Collection的。

Set接口常用的实现类有HashSet和TreeSet

HashSet类实现了Set接口,有哈希表(实际上是HashMap)支持,它不保证Set的迭代顺序,特别是它不包证高顺序的持久不变。 此类允许使用null。

TreeSet类不仅实现了Set接口,还实现了java.util.SortedSet接口。因此,TreeSet类实现的Set集合在遍历集合时可以按照自然顺序排序,也可以按照指定比较器递增排序,也就是可以通过比较器对TreeSet类实现的Set集合中的对象进行排序,下面定义了一个StudentClass类,重点是这类要想添加到TreeSet实现的集合当中的话就得实现Comparable接口,实现compareTo方法:

4b7db2a6a779296459bd74cb9f5f8a84.png

下面是它的调用和打印的东西,我们粘贴出来,在最后会是打印的日志:

b8687eafa081eaa5bbb98a4acc302837.png

随后是打印的日志,可以看到是没有问题的:

026d7293a7d94ee5a8a596a74400f42c.png

Map接口:

Map集合没有继承Collection接口,它提供的Key到Value的映射,Map中不能包含相同的Key,每一个Key只能映射一个Value,下面是Map的基本使用,其实举一反三,这时候也大概知道怎么写怎么用了;

建议使用HashMap集合,因为HashMap类实现Map集合,原因也是它的优点,集合添加和删除映射关系的效率更高。HashMap是基于哈希表的Maori实现。HashMap通过哈希码对内部的映射关系进行快速的查找,而TreeMap类的映射关系存在一定顺序,如果希望Map集合对象也存在一定的顺序,就用TreeMap.

5613ee5b22c76032543aafbc2f8ddb80.png

后面的Arrays的使用因为在总结算法的学习,在自己的《算法学习》分类中再总结它的具体使用,从Arrays的冒泡和选择排序开始。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值