用户操作
[即时聊天] [发私信] [加为好友]
JavaapprenticeID:Java_apprentice
8658次访问,排名13163(2),好友0人,关注者1人。
Java_apprentice的文章
原创 48 篇
翻译 0 篇
转载 0 篇
评论 3 篇
最近评论
xkpkhu:wow power leveling
lcy198624:谢谢啊
rightrat:如果就是想将一个father对象转成一个son对象,那该怎么做呢?
文章分类
    收藏
      相册
      存档
      软件项目交易
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes

      原创 List、vector、set、map的区别与联系 收藏

      新一篇: sumary ~~~7.16-7.20 | 旧一篇: congratulations on my first project in weblogic

       
      在使用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 : 基于ArrayList,其实就是封装了Array所不具备的一些功能方便我们使用,它不可能走入Array的限制。性能也就不可能超越Array。所以,在可能的情况下,我们要多运用Array。另外很重要的一点就是Vector“sychronized”的,这个也是VectorArrayList的唯一的区别。

      ArrayList
      :同Vector一样是一个基于Array上的链表,但是不同的是ArrayList不是同步的。所以在性能上要比Vector优越一些,但是当运行到多线程环境中时,可需要自己在管理线程的同步问题。

      LinkedList
      LinkedList不同于前面两种List,它不是基于Array的,所以不受Array性能的限制。它每一个节点(Node)都包含两方面的内容:1.节点本身的数据(data);2.下一个节点的信息(nextNode)。所以当对LinkedList做添加,删除动作的时候就不用像基于ArrayList一样,必须进行大量的数据移动。只要更改nextNode的相关信息就可以实现了。这就是LinkedList的优势。

      List
      总结:

      1.
      所有的List中只能容纳单个不同类型的对象组成的表,而不是KeyValue键值对。例如:[ tom,1,c ]

      2.
      所有的List中可以有相同的元素,例如Vector中可以有 [ tom,koo,too,koo ]

      3.
      所有的List中可以有null元素,例如[ tom,null,1 ]

      4.
      基于ArrayListVectorArrayList)适合查询,而LinkedList(链表)适合添加,删除操作。

      HashSet
      :虽然SetList都实现了Collection接口,但是他们的实现方式却大不一样。List基本上都是以Array为基础。但是Set则是在HashMap的基础上来实现的,这个就是SetList的根本区别。HashSet的存储方式是把HashMap中的Key作为Set的对应存储项。看看HashSetaddObject  obj)方法的实现就可以一目了然了。

          public boolean add(Object obj)
          {
              return map.put(obj, PRESENT) == null;
          }

      这个也是为什么在Set中不能像在List中一样有重复的项的根本原因,因为HashMapkey是不能有重复的。

      LinkedHashSet
      HashSet的一个子类,一个链表。

      TreeSet
      SortedSet的子类,它不同于HashSet的根本就是TreeSet是有序的。它是通过SortedMap来实现的。

      Set
      总结:

      1. Set
      实现的基础是MapHashMap);

      2.  Set
      中的元素是不能重复的,如果使用add(Object obj)方法添加已经存在的对象,则会覆盖前面的对象;

      欢迎续加 

      发表于 @ 2007年07月20日 13:44:00|评论(loading...)|编辑

      新一篇: sumary ~~~7.16-7.20 | 旧一篇: congratulations on my first project in weblogic

      评论:没有评论。

      发表评论  


      当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
      Csdn Blog version 3.1a
      Copyright © Java_apprentice