java集合相关简介

来源:互联网 发布:网络锁是什么意思 编辑:程序博客网 时间:2024/06/13 07:47

一、集合与数组简介

数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,要对数组进行增加减少长度操作复杂,所以引入集合。

集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用。

二、集合框架

Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap

└WeakHashMap

三、常用接口和类简介

List

List是一个接口。List是有序的Collection。List允许存储重复的元素。List允许存储所有类型元素,包括NULL。实现List接口的常用类主要有:1、ArrayList:    一个可变大小的数组    不同步,即当有两个线程同时调用时,一方改变不会影响另一方。2、LinkedList:    一个双向循环链表,其内每个对象除了数据本身外,还有两个引用,分别指向前一个元素和后一个元素    不同步3、Vector:几乎与ArrayList完全相同,但其实现了同步。4、Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。对于ArrayList,查询速度很快,增加和删除(非最后一个节点)操作非常慢(本质上由数组的特性决定的)对于LinkedList,查询速度非常慢,增加和删除操作非常快(本质上是由双向循环链表决定的)

Set

Set是一个接口。Set实现了Collection接口。Set不允许出现重复的元素。实现Set接口的常用类主要有:1、HashSet:    使用的是相当复杂的方式来存储元素的,使用HashSet能够最快的获取集合中的元素,效率非常高(以空间换时间)。2、TreeSet:    会自动排序,如果存放的对象不能排序则会报错,所以存放的对象必须指定排序规则。排序规则包括自然排序和客户排序。①自然排序:TreeSet要添加哪个对象就在哪个对象类上面实现java.lang.Comparable接口,并且重写comparaTo()方法,返回0则表示是同一个对象,否则为不同对象。②客户排序:建立一个第三方类并实现java.util.Comparator接口。并重写方法。定义集合形式为TreeSet ts = new TreeSet(new 第三方类());

Map

Map是一个接口。Map没有继承Collection接口。Map提供key到value的映射。Map不能包含相同的key。Map的key只能映射一个value。Map接口提供3种集合的视图,一组key集合,一组value集合,或者一组key-value映射。实现Map接口的常用类主要有:1、HashMap:Map接口的典型实现类。无序、不同步、key/value允许为NULL。2、Hashtable:类似于HashMap。不同的是:同步(即线程安全)、key/value不允许为NULL。3、TreeMap:会自动排序的HashMap。其排序方式等同于TreeSet。4、LinkHashMap:有序的HashMap。不同于TreeMap,它是用双向链表来维护 key-value 对的次序(其实只考虑了key的次序),该链表负责维护Map的迭代顺序,迭代顺序与 key-value 对的插入顺序一致。5、WeakHashMap: 与HashMap的用法基本相似。不同在于:    HashMap的值保留了对实际对象的强引用,这意味着只要该HashMap对象不被销毁,该HashMap 中的所有key 所引用的对象就不会被垃圾回收, hashMap也不会主动删除这些 key-value 对;但WeakHashMap只保留了对实际对象的弱引用,这意味着如果 WeakHashMap 对象的 key所引用的对象没有被其他强引用变量所引用, 则这些key所引用的对象可能被垃圾回收, WeakHashMap也可能自动删除这些 key所对应的 key-value对。6、IdentityHashMap:与HashMap的用法基本相似。不同在于:    IdentityHashMap 在处理两个key值相等时比较独特:在 IdentityHashMap中,当且仅当两个key严格相等(key1==key2)时, IdentityHashMap 才认为这两个key相等;对于普通的 HashMap 而言,只要 key1和 key2通过 equals() 方法比较返回true,且它们的 hashCode 值相等即可。7、EnumMap:    EnumMap在内部以数组的形式保存    EnumMap根据key的自然顺序(即枚举值在枚举类中定义顺序)来维护key-value 对的顺序。    EnumMap不允许使用null来做为 key,但允许null作为value。    创建EnumMap时必须指定一个枚举类,从而将该 EnumMap和指定枚举类关联起来

原创粉丝点击