JAVA集合框架结合应用浅析

    首先这里小编附上集合框架图一张。一看是不是很怕怕呢?下面小编适当为大家进行解析。

202332_iKb4_2841107.jpg

    先从最常用的List接口说起,主要的实现类有ArrayList,LinkedList,Vector这三类。其中ArrayList、Vector的底层的实现是数组,而LinkedList的底层实现是链表。了解数据结构的同学应该就明白了,相对另两种而言,LinkedList相对而言在插入和删除数据时更快,而慢于查询。而ArrayList、Vector在查询上更优,慢于增删。

    而这其中Vector与另两者的区别是Vector是线程安全的,因为Vector的方法是线程同步的。因此在涉及多线程编程中,例如多人抢票等情境下更为适用。

    再说Set接口,Set接口与List接口的不同在于Set集合中的元素不允许重复。当Set集合存放的是字符串,整数等数据时,重复这个概念很容易理解。但是当Set集合存放的例如学生,狗这样的实体类时,怎么样才叫重复呢。这就需要人来定义了。这可以通过重写equals()方法来实现,因为Set集合是通过两个对象是否equals来判断对象是否重复的。比如重写学生类的equals方法为if(a.name==b.name)then a.equals(b)。在这里小编友情提醒,重写equals方法必须重写hashcode方法。并且这里有一个编程规范。就是两个对象equals与他们的hashcode相等最好等价。Set接口有两个实现类——HashSet与TreeSet。其中HashSet底层由HashMap实现,待会讲Map时再详述;TreeSet 底层由树实现。这两者的主要区别是TreeSet是有序的,而HashSet是无序散列的。

    最后谈一谈Map接口。Map类型的数据很好理解。就是和Json一样的键值对。Map的实现类主要有HashMap与TreeMap 两种,主要的区别与HashSet与TreeSet相似。一个有序一个无序。另外这里还想提一提HashMap的底层实现。HashMap的底层实现可以认为是hash表上面挂上链表的形式,在增删元素时,先查找Key是否如果。如果不存在则新建并插入,如果存在则找到对应链表,并向对应链表插入值。

    以小编对集合框架的掌握程度差不多只能讲这么多东西了。如有疑问的地方尽情留言探讨,也可以问百度,google还有csdn等社区。今天就到此为止了。

转载于:https://my.oschina.net/shenwc/blog/753531

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值