集合2-1的问题

集合2-1的问题

1、为什么会出现两个总接口Collection和Map,莫名其妙的。。

2、课程里说,ArrayList底层是由数组实现的,说明ArrayList约等于数组吗?

3、课程里说,ArrayList的元素可以为null,就是说传入的元素可以只有引用没有对象,如:Cat one;是这意思吗?

4、Collection接口里有contains方法,参数是Object的对象,还有remove方法的参数也是Obvject类的对象。老师我不太懂,传入的是非Object类的对象也不报错,为什么呢?

5、Collection里的equals方法的作用是什么?

6、Collection里的toArray()方法,能把集合转换成数组,说明集合其实就是等于数组吗?

7、List接口继承了Collection和Iterable两个接口,说明接口不像子类继承父类一样,只有唯一吗?

8、集合的接口和类都在java.util包里吗?

9、集合为什么这么复杂,有这么多的接口?包装类和字符串类就很简洁,也好理解。

10、ArrayList的第二个构造方法:ArrayList(Collection<? extends E>c)这怎么理解,看都看不懂啊。

11、ArrayList的无参构造方法默认给10个空间,这是什么意思?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕珊 2019-08-10 18:38:14

你好!1、Collection是接口,没有重写equals()方法。

2、LinkedList等Collection实现类的对象是可以传进去的

3、如下选中代码所示,list是指向ArrayList对象的引用,所以它可以代表ArrayList的对象。

http://img1.sycdn.imooc.com//climg/5d4e9e500001557105030148.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 鱼儿0001 #1
    老师好,1、既然Collection没有重写eqials方法,那么Collection的equals方法的作用是什么?比较的是对象的引用之间的内存地址相同吗?还是别的?2、关于我问的第三个问题,如果是父类引用指向子类对象,如:Animal one=new Cat();,这里的引用one代表的是Animal的对象,还是Cat的对象呢?
    2019-08-11 22:53:01
  • 好帮手慕阿莹 回复 提问者 鱼儿0001 #2
    1、是的,比较内存地址是否相同。2、指向的是Cat的对象的引用。 如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
    2019-08-12 13:50:15
  • 提问者 鱼儿0001 回复 好帮手慕阿莹 #3
    老师,最后一问我还是不太清楚。Animal one =new Cat(),一眼看过去这个one是Animal类的引用。可是我又觉得是Cat对象的引用,这怎么理解?
    2019-08-12 14:31:42
好帮手慕珊 2019-08-10 11:22:49

你好!分别回答你的几个问题:

1、关于null,你的理解是对的

2、关于方法参数是Object问题,因为Object是所有类的父类,这样才能接收到所有的子类对象。这个跟之前同学问的方法参数是Animal,传入Dog类的对象,是一个问题。是向上转型。

3、equals()方法是比较两个对象的内容是否相等

4、现在的阶段看不懂源码也没关系,老师举例只是想说明一下是进行了数据拷贝。

5、是的,implements是类实现接口时使用的,接口之间是继承

6、这里老师说的子类,其实是指实现Collection的类。

在代码中注意new ArrayList(list)中的参数list,它是ArrayList对象,而ArrayList是Collection的一个实现类,所以这就是ArrayList的第二个构造方法的使用。把一个Collection的实现类的对象作为方法参数。也就是通过一个集合去创建另一个集合。

http://img1.sycdn.imooc.com//climg/5d4e37ad0001c83307040232.jpg

7、是的,ArrayList的底层是数组,这个老师在讲ArrayList的时候介绍过。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 鱼儿0001 #1
    老师好,1、Collection里的equals方法重写了吗,重写后的方法与Object类的equals方法在作用上有什么区别?2、ArrayList的第二种构造方法,是传入Collection的实现类的对象,那么Linkedlist等Collection的实现类对象也能传进去吗?3、还有,前面老师举的代码是:List list=new ArrayList();,老师,注意这里的list是接口List的,在ArrayList li=new ArrayList(list);中传入的list其实是接口List的引用,list怎么会是ArrayList的对象?
    2019-08-10 16:41:38
好帮手慕小班 2019-08-08 19:38:44

        同学你好,1、java中集合总体上来说是分为Collection和Map两种类型的,比如

http://img1.sycdn.imooc.com//climg/5d4bfd2800013eda05590315.jpg

在学习了后面的set集合和map集合后,就会明白,这是集合的大分类,就好像人类分为男生和女生两类!

        2、ArrayList底层是由数组实现,并不是说他就是约等于数组,它与其他集合一样,也是可以自动扩容、存放不同的类型,它只是在底层实现的时候是使用了数组的形式来实现!

        3、Java中,null是一个关键字,用来标识一个不确定的对象。因此可以将null赋给引用类型变量,比如Cat  one=null! 这就是一个null值,它可以存入集合中,占据一个位置,但是并没有引用指向它!

        4、我们在课程Java继承下的章节中讲述了 Object是所有类的根类,是所有类的父类,所以只要是一个类,它就一定可以说它是一个Object类型的类,就好比人类表示所有的人,那无论是中国人、美国人、印度人都是继承的人类这个父类,都可以说是一个人!

        所以说这里传入的是非Object类的对象是不存在的,传入的肯定是一个Object类或者是它的子类!

        5、Collection里的equals方法的作用,就是判断当前集合collection 与指定对象是否相等!

        6、Collection里的toArray()方法,是将这个集合中的数据全都拷贝存入一个数组里返回!并不是把集合转换成数组!比如:在底层中是拷贝了所有的数据!

http://img1.sycdn.imooc.com//climg/5d4c036a00019dbc05020094.jpg

这里我们知道这个方法的作用是将集合中所有数据返回到一个数组中就可以了哟!

        7、首先一个类只能extends一个父类,但可以implements多个接口。一个接口可以同时extends多个接口,却不能implements任何接口。因而,Java中的接口是支持多继承的。

        8、util包下有很多的接口和类,集合的接口和类也在util包下哟

http://img1.sycdn.imooc.com//climg/5d4c05bb0001e95f02530649.jpg

        9、不同的集合结构不同,适合于不同的场景,所以会比较多,集合实际也很多,非常重要。只要多听多练,掌握了常用的方法,也就不难了

        10、ArrayList(Collection<? extends E> c)

        是指在创建ArrayList对象时,可以传入一个Collection子类的对象。然后利用传入的集合对象中的数据,去创建ArrayList对象。

http://img1.sycdn.imooc.com//climg/5d4c08ad00010c7404880140.jpg

在li集合中可以直接存入一个ArrayList集合!

        11、集合与数组最大的区别是集合能够自动扩容,这里默认给10个空间,就是这个集合的初始空间为10,当这10个空间用完后,会自动扩容,增加长度!

        如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 鱼儿0001 #1
    谢谢老师的耐心回复。1、null就是指只有引用没有对象,引用不指向任何对象,我的理解对吗?2、关于我问的第四个问题,我就这么问吧:为什么Collection接口的方法contains和remove的参数得是Object类的对象,但是传入Object类的子类对象也不报错?这是难道是向上转型吗?3、我问的第五个问题,Collection里的euqals方法,比较的是内存地址是否相等吗?4、谢谢老师调了原始代码解答我的问题,我感觉本根看不懂原始代码啊。。。。5、老师,对于接口来说,接口可以多继承,根本没有implements的概念,对吧?6、老师我问的第十个问题,你说:可以传入一个Collection子类的对象。老师,关于我问的第十个问题,你说:Collection是接口,它哪里来的子类的对象?还有你举的代码例子我也没看懂。7、老师,ArrayList类的存储方式是不是和数组很像,都是一片连续的内存空间?
    2019-08-09 23:25:49
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师