Java集合框架认识

今天仔细研究了几个主要的集合类,结合数据结构的知识,说说我对这些集合类特点的认识。

List接口下的类

在数据结构刚开始的时候,就有对顺序表和链表的讲解,包括实现存入数据,获取数据,判空等基本方法。

  • Vector和ArrayList的结构就是顺序表。
    对两个类的底层代码做了比较,Vector的几乎所有方法都有 sychornizeed修饰。所以很容易看出vector类相比ArrayList是线程安全的。当在需要线程安全的程序里,两者之间当然会选择vector;正由于vector的线程安全,它的开销会相比ArrayList大,所以在正常的情况下会选择ArrayList。
  • 相对顺序表,LinkedList的结构是链表结构。
    先跑个小题,链表结构都是通过指针建立的结构(前一个元素的指针指向后一个元素),而在Java中,由于指针潜在的危险性,禁用了这一属性,那LinkedList结构是怎么实现的呢 。记得做过一个关于约瑟环的小题。在题中需要建一个循环队列。当时的我还懵懂无知,不懂指针,不懂面向对象思,我就想到了一个这样的方法:首先声明一个二维数组a[n][2],a[x][0]存入元素,a[x][1]存入下一个元素的x下表。后来老师看了以后,说可以建个结构体,存放元素和指针属性。而这正是Java没有指针也能实现链表结构的原因。而我此后越来越觉得指针并不应该是一个具体的东西,而是一个思想:根据已知元素通过某种联系指向另一个我们想得到的元素。

Map接口下的类

在数据结构学习的后期阶段,学习了Map的各种用法,包括一些搜索,动态规划等算法都是建立在Map思想的基础下。可以说Map的思想在金算计领域是很重要的。

  • HashMap和HasTable
    在数据结构中讲到查询的几种算法中,hash表查找就是其中一种。曾经自己做过一个小的hash表结构,可以实现存入和取出功能,当然当时的实现机制的是特别笨重的,即最基本的hash原理。没有一点改进和优化的。但通过此次的联系,让我对哈希表查询表有更深层次的理解。而HashMap类的底层实现也是相同的思想。在HashMap上又引入了Hashtable。HashTable是线程安全的,两者使用场所比较和前面讲的ArrayList与Vector一样的,就不在赘述了。

    Set接口下的类

    主要有TreeSet和HashSet。这两个我没有做深层次的研究,但是从字面意思,应该能了它们的基本存储结构。

以上我的理解,如果有错的地方,但愿不要误导各位大哥。也恳请您的纠错。嘻嘻 (∩_∩)!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值