集合类的使用

来源:互联网 发布:app数据分析什么软件好 编辑:程序博客网 时间:2024/06/10 02:55

在使用Java的时候,我们都会遇到使用集合(Collection)的时候,但是Java API提供了多种集合的实现,我在使用和面试的时候频

 

频遇到这样的“抉择” 。 :)(主要还是面试的时候)

 

久而久之,也就有了一点点的心得体会,写出来以供大家讨论 。

 

总的说来,Java API中所用的集合类,都是实现了Collection接口,他的一个类继承结构如下:

 

Collection<--List<--Vector

Collection<--List<--ArrayList

Collection<--List<--LinkedList

Collection<--Set<--HashSet

Collection<--Set<--HashSet<--LinkedHashSet

Collection<--Set<--SortedSet<--TreeSet

 

Vector : 基于Array的List,其实就是封装了Array所不具备的一些功能方便我们使用,它不可能走入Array的限制。性能也就不可能

 

超越Array。所以,在可能的情况下,我们要多运用Array。另外很重要的一点就是Vector“sychronized”的,这个也是Vector和

 

ArrayList的唯一的区别。

 

ArrayList:同Vector一样是一个基于Array上的链表,但是不同的是ArrayList不是同步的。所以在性能上要比Vector优越一些,但

 

是当运行到多线程环境中时,可需要自己在管理线程的同步问题。

 

LinkedList:LinkedList不同于前面两种List,它不是基于Array的,所以不受Array性能的限制。它每一个节点(Node)都包含两方

 

面的内容:1.节点本身的数据(data);2.下一个节点的信息(nextNode)。所以当对LinkedList做添加,删除动作的时候就不用像

 

基于Array的List一样,必须进行大量的数据移动。只要更改nextNode的相关信息就可以实现了。这就是LinkedList的优势。

原创粉丝点击