java之认识集合一

事物的出现都有其必然原因,在我第一次接触新知识的时候,我都会去思考其中的原因,尽管,不是每次都能很好的说服自己,就像,在数组的基础上,第一次接触集合(只指在编程中),我就会去不自觉的比较集合和集合。


集合与数组的比较:

数组 :长度一旦固定之后就不能改变, 数组存储的元素(可以是基本数据类型,也可以是对象)类型得是一样的;

集合: 长度可变,集合中的元素(都是对象)类型可以不一样,但是,在泛型集合中,会建议集合中元素类型一致。


集合和数组的区别,给我的直观感觉就是这样的,但是本质上都是一个容器,都是存放元素的。(个人不成熟的认识)


既然集合是存放元素的,那么按照正常人的思维,会正常思考,这里面的元素是不是可以重复啊,是不是按存放的先后顺序进行编号呢,是不是会按元素大小来排序编号呢。。。

在Java集合(java.util包中)中大致分为:

Set:代表无序,不可重复的集合(代表:HashSet)           ----------------->     在Set集合中元素不可以重复,也没有顺序,而且是乱的
List:代表有序,重复的集合(代表:ArrayList)                  ----------------->      在List集合中元素可重复,按大小编号(既然比较元素值,肯定会提供比较的方法),是有序的
Map:代表具有映射关系的集合(代表:HashMap)           ----------------->     (还没有学习。。。)“一个萝卜,一个坑”
Queue:代表队列集合

搞清分类,来看看集合之间的继承关系(不准确的说法)

Set、List、Queue都是实现Collection接口,这就意味着,Collection中定义的方法,在Set、List、Queue中都有。



具体参见API文档.

(此处,实例代码暂时省略...)

  • 注意:当使用foreach循环迭代访问集合元素时,该集合也不能被改变。
  • 注意:Set判断两个对象相同不是使用==运算符,而是根据equals方法。
  • 注意:HashSet集合判断两个元素相等的标准:是两个对象通过equals方法比较相等,并且两个对象的hashCode()方法返回值也相等。

总结:

ArrayList 和Vector类都是基于数组实现的List类,所有它们封装了一个动态再分配的Object[]数组。

ArrayList和Vector的显著区别:

ArrayList是线程不安全的,在多线程的情况下,必须手动保证该集合的同步性
Vector是线程安全的,无需程序保证该集合的同步性,但因此性能也会比ArrayList稍微低点

实际上,即使需要保证List集合线程安全,也不推荐使用Vector,因为后期会有Collections工具类将一个ArrayList变成线程安全的。


(还没有太多心得,估计是练习少了,权且记录点上课内容,如果之后有格外的体会,会重写的)


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值