zoukankan      html  css  js  c++  java
  • Java-集合类汇总

    结构图:  
      
    Collection  
    ├List  
    │├LinkedList  
    │├ArrayList  
    │└Vector  
    │ └Stack  
    └Set  
    Map  
    ├Hashtable  
    ├HashMap  
    └WeakHashMap 
    ----------------------------------------------------------------------  
    Collection接口  
              Collection是最基本的集合接口,一个Collection代表一组Object,  
             即Collection 的元素(Elements)。一些Collection允许相同的元素  
             而另一些不行。一些能排序而另一些不行。  
      
             
    Map接口  
                请注意,Map没有继承Collection接口,Map提供key到value的映射。  
              一个Map中不能包含相同的key,每个 key只能映射一个value。  
        Map接口提供3种集合的视图,Map的内容可以被当作一组key集合,  
              一组value集合,或者一组key-value 映射。  
    ------------------------------------------------  
      
    list接口和set接口区别:  
       list允许有相同元素,而set不允许  
    Vector与ArrayList区别:  
       Vector非常类似ArrayList,但是Vector是同步的。  
             由Vector创建的Iterator,虽然和 ArrayList创建的Iterator是同一接口,但是,因为Vector是同步的,  
             当一个Iterator被创建而且正在被使用,另一个线程改变了 Vector的状态(例如,添加或删除了一些元素),  
             这时调用Iterator的方法时将抛出 ConcurrentModificationException,因此必须捕获该异常。  
    Stack 类:  
      Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。  
              基本的push和pop方法,还有peek方法得到栈顶的元素,empty方法测试堆栈是否为空,search方法检测一个元素在堆栈中的位置。  
        Stack刚创建后是空栈。  
    ------------------------------------------------  
    总结  
      如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。  
      如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。  
      要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法。  
      尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是针对抽象编程。   
  • 相关阅读:
    数据库主键生成策略
    弹出窗返回数据实体对象或对象集
    我的家乡话,模糊和清晰的记忆......
    曾经年少
    获取父页面URL的参数对应值及左对齐字符串
    .Net编程规范
    DBdifference
    GridView翻页时保持CheckBox选择状态
    .CS中的javascript
    (转)程序员职业规划
  • 原文地址:https://www.cnblogs.com/hwaggLee/p/4510646.html
Copyright © 2011-2022 走看看