Java中的集合类

来源:互联网 发布:衣阿华 知乎 编辑:程序博客网 时间:2024/06/06 01:53
  • Set:是一个接口,无序集合,不能包含重复元素。同时身为接口不能生成对象。但是类HashSet和TreeSet实现了该接口,所以通常使用的也是这两个。

  • HashSet:该集合中主要存放的一些无序元素。如果你只是想用一个‘罐子’盛东西,其他什么都不关心,可以选它。

  • TreeSet:该集合除了实现Set接口还实现了SortedSet接口。也就是说可以用它来进行一些排序默认升序。当然排序的元素必须具有可比性。也就是说对于基本类型如:Float,Integer,String,Character等

  • List:接口,允许出现重复元素。与Set另一个不同的地方就是元素有序。如果你对加进‘罐子’里东西很在乎先后。如谁先进去的谁后进去的,第几个是谁比较关心可以选用。但是同样。List是个接口我们通常使用的是两个实现了该接口的两个类arrayLis和LinkedList。

  • ArrayList:支持对元素的快速访问。但是对插入和删除支持性差。

  • LinkedList:对元素的插入和删除性能良好。由于List中元素有序,可以我们不用Iterator对象也可以访问,不过要先调用toArray()方法。才能像操作一个普通数组一样访问。

Collection       接口的接口     对象的集合 ├ List           子接口         按进入先后有序保存   可重复 │├ LinkedList    接口实现类     链表     插入删除   没有同步   线程不安全 │├ ArrayList     接口实现类     数组     随机访问   没有同步   线程不安全 │└ Vector        接口实现类     数组                  同步        线程安全 │   └ StackSet            子接口       仅接收一次,并做内部排序 ├ HashSet │   └ LinkedHashSet └ TreeSet 
Map                接口      键值对的集合 ├ Hashtable                 接口实现类                同步        线程安全 ├ HashMap                   接口实现类                没有同步    线程不安全 │├ LinkedHashMap │└ WeakHashMap ├ TreeMap └ IdentifyHashMap 
  • Collection 是对象集合, Collection 有两个子接口 List 和 Set,List 可以通过下标 (1,2..) 来取得值,值可以重复,而 Set 只能通过游标来取值,并且值是不能重复的

    ArrayList , Vector , LinkedList 是 List 的实现类

    ArrayList 是线程不安全的, Vector 是线程安全的,这两个类底层都是由数组实现的

    LinkedList 是线程不安全的,底层是由链表实现的

    Map 是键值对集合

    HashTable 和 HashMap 是 Map 的实现类
    HashTable 是线程安全的,不能存储 null 值
    HashMap 不是线程安全的,可以存储 null 值

http://blog.csdn.net/jackie03/article/details/7312481
http://blog.csdn.net/nishuihanliu/article/details/51291992