关闭

java之Map,List,Array

标签: java
48人阅读 评论(0) 收藏 举报
分类:
1.类的层次关系如下:
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap

2.世间上本来没有集合,(只有数组参考C语言)但有人想要,所以有了集合,有人想有可以自动扩展的数组,所以有了List ,有的人想有没有重复的数组,所以有了set.

   要深入理解集合首先要了解下我们熟悉的数组

  数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),而JAVA集合可以存储和操作数目不固定的一组数据。
  Collection是最基本的集合接口,声明了适用于JAVA集合(只包括Set和List)的通用方法。Set 和List 都继承了Conllection,Map。
3. Collection接口的方法:
    boolean add(Object o)      :向集合中加入一个对象的引用      
    void clear():删除集合中所有的对象,即不再持有这些对象的引用      
    boolean isEmpty()    :判断集合是否为空    
    boolean contains(Object o) : 判断集合中是否持有特定对象的引用     
    Iterartor iterator()  :返回一个Iterator对象,可以用来遍历集合中的元素   
    boolean remove(Object o) :从集合中删除一个对象的引用  
    int size()       :返回集合中元素的数目  
    Object[] toArray()    : 返回一个数组,该数组中包括集合中的所有元素 </span> 
4.关于:Iterator() 和toArray() 方法都用于集合的所有的元素,前者返回一个Iterator对象,后者返回一个包含集合中所有元素的数组。
Iterator接口声明了如下方法:
    hasNext():判断集合中元素是否遍历完毕,如果没有,就返回true      
    next() :返回下一个元素      
    remove():从集合中删除上一个有next()方法返回的元素。  
      1: for循环和get()方法:
          for(int i=0; i<list.size();i++){    
            System.out.println(list.get(i));   
          }  

      2: 使用 迭代器(Iterator):
          Iterator it=list.iterator();    
           while(it.hashNext()){    
            System.out.println(it.next());  
          }      
  5.  你可以将任何东西放到一个List容器中,并在需要时从中取出。ArrayList从其命名中可以看出它是一种类似数组的形式进行存储,因此它的随机访问速度极快,而LinkedList的内部实现是链表,它适合于在链表中间需要频繁进行插入和删除操作。在具体应用时可以根据需要自由选择。前面说的Iterator只能对容器进行向前遍历,而ListIterator则继承了Iterator的思想,并提供了对List进行双向遍历的方法。
    ArrayList() : 代表长度可以改变得数组。可以对元素进行随机的访问,向ArrayList()中插入与删除元素的速度慢。
    LinkedList(): 在实现中采用链表数据结构。插入和删除速度快,访问速度慢。       Map是一种把键对象和值对象进行关联的容器,而一个值对象又可以是一个Map,依次类推,这样就可形成一个多级映射。
     HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null value和null key。,
  Hashtable继承Map接口,实现一个key-value映射的哈希表。任何非空(non-null)的对象都可作为key或者value。

   6.  而几乎有有的集合都是基于数组来实现的.   因为集合是对数组做的封装,所以,数组永远比任何一个集合要快 ,但任何一个集合,比数组提供的功能要多  
一:数组声明了它容纳的元素的类型,而集合不声明。这是由于集合以object形式来存储它们的元素。  

二:一个数组实例具有固定的大小,不能伸缩。集合则可根据需要动态改变大小。 




续集:数组的长度是固定的,只能存储一个类型的元素;但是集合不能存储基本数据类型,而数组却可以。

          ArrayList每次扩容都扩大到原来的1.5倍.

map clear() 删除所有键值对
    containsKey  查询是否包含指定key
    containsValue  查询是否包含指定value
    isEmpty()     是否为空
    put(Map map)
Map中包含一个内部类:Entry。该类封装了一个键值对,它包含了三个方法:
1、Object getKey():返回该Entry里包含的key值。
2、Object getValeu():返回该Entry里包含的value值。
3、Object setValue(V value):设置该Entry里包含的value值,并返回新设置的value值。






参考:http://www.cnblogs.com/wuyifu/p/3741433.html

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:32275次
    • 积分:1185
    • 等级:
    • 排名:千里之外
    • 原创:73篇
    • 转载:17篇
    • 译文:14篇
    • 评论:2条
    最新评论