Java集合框架

Java内置的集合框架
说说集合,所有的数组,什么链表什么的都是一堆东西按照一定的规律来的,所以就抽象出共同具有的相同方法或者属性作为一个超类大家都继承它,减少代码的量,提高代码重用率,更主要的目的是抽象出更加符合现实生活的类,突然想到了哲学里面的统一性和多样性,马克思说世界具有统一性和多样性,所有的事物有一样的一面也有自己独特的一面。Java也是相信这一点,才有了 接口(即为统一的一面),继承(独特的一面)。经过大佬们的总结发现所有的一堆东西都应该可以迭代的不然怎么知道这堆东西里有些什么东西、怎么访问那堆东西里面的一个东西,咦赶紧抽象出一个超类iterable,所有的成堆的东西得有一个迭代(依赖 ),发现那堆东西,有的堆东西有序有的无序的,咦,抽象出list和set还有相应的方法。。。。。。
各种类的继承如图(图片来源菜鸟教程)

  • 总体分析

  • Iterable

这个接口就是用于选择怎么样的迭代器,是普通的或者可分割的
iterator()
就是返回一个普通的迭代器(每次调用指向第一个元素,调用一次遍历一次),iterator里只有next()表示指向下一个元素,remove表示删除当前元素,forEachRemaining()遍历每个元素,执行一个传入的动作,最大的疑惑就是谁实现了这个接口呢?在IDEA点开这个类的实现发现好多,发现iterator的实现类都在各个集合实现类里面实现的,因为不同的集合,类型不一样,也就是实现不同的数据结构,什么链表栈的都需要不同的迭代器,不存在写一个迭代器通用的,所以实现一个集合的同时实现一个迭代器,而且这个迭代器应该是私用的。
spliterator()
返回一个可以分割的迭代器,听说用于并发开发的时候用的没研究。
forEach()
遍历每个元素,执行一个传入的动作,想到的例子就是给每个数组元素加1,就传入一个+1动作调用此函数就可以了,动作实现Consumer接口

  • Collection

这个接口继承自iterable(之所以继承是因为要让实现类必须同时实现迭代器,不然无法操作这堆对象),定义了一些增删查改的操作方法,大佬们总结出来了,对于一堆东西都哪些操作可能做还有那些操作必须做避免走弯路的,抽象出一系列的方法比如什么删除,增加,查询是否有传入参数的某个对象,或者是否包含某个传入的集合,还有转化为数组的各种不同参数函数。感觉就是一个高级迭代器 。不过继续思考,一个迭代器任务就是遍历集合,还有移动指向。然后其他规则比如指定只能删除末尾增加头部就是属于队列的特性了,队列特有的而不是迭代器的任务了。可谓抽象得相当好。
Collection抽象出来的一些集合通用的方法在子类赋值给父类的时候比较有用,比如有时候需要一个集合参数传入函数,但是事先不知道什么类型的集合(set,list…)可以直接先用父类声明,必须时完整转换为所需要的子类,而且有时候用的只是父类接口所拥有的方法就不用转换,直接用就可以不用管是什么集合类型,反正都要实现相应的接口方法。

  • Set
    Set继承于Collection接口,和Collection一样的方法,只是它的实现类是不一样,里面都是不可重复的元素。里面也加了几个静态的方法,比如根据传入的参数创建一个Set什么的。

  • List
    List继承于Collection接口,和Collection一样的方法,只是它的实现类是不一样,里面都是可重复的有序元素

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值