JAVA集合

体系结构(用于操纵集合)
 collection
        |
----------------
   |              |
set          list
         |
sortedset   map
        |
   sortedMap
 
集合
 将多个元素组成一个单元的对象
 用于存储、检索、操纵和传输数据
集合框架
 提供用于管理对象集合的接口和类
 包括接口、实现和算法
接口 实现  历史集合类
Set  HashSet 
TreeSet  
List  ArrayList  Vector 
LinkedList  Stack
Map  HashMap  Hashtable
TreeMap  Properties
Collection接口
集合框架的根
通用方法
 boolean contains(Object a)
 boolean equals(Object a)
 Iterator iterator()
 int size()
 void clear()
 boolean add(Object a)
Set接口
扩展Collection接口
不允许重复元素
对 add()、equals() 和 hashcode() 方法添加了限制
HashSet和TreeSet是Set的实现
SortedSet接口
扩展了Set接口
元素按升序排序
重要异常
ClassCastException
NullPointerException

List接口
具有顺序的集合
扩展了Collection接口
元素可以通过其整型下标访问(起始下标为0)
可以包含重复元素
方法分类:
定位方法
get()、set()、add()、remove()、addAll()
搜索方法
indexOf() 和 lastIndexOf()
ListIterator方法
listIterator() 和 subList()
Map接口
将键映射至值的对象
 每个键最多都只能映射至 一个值
重要方法
基本操作
 put()、get()、remove()、containsKey()、containsValue()、size() 和 isEmpty() 
 批操作
 putAll() 和 clear()
 集合视图
 keySet()、values() 和 entrySet()

实现
用于存储集合的实际数据对象
重要集合类
 AbstractCollection类提供Collection接口的框架实现
 AbstractList 类提供 List 接口的框架实现
 AbstractSequentialList 类是 List 接口的实现
 LinkedList 类提供多个方法,用于在列表开始处和结尾 处获得、删除和插入元素
 ArrayList 类是 List 接口的可变大小数组实现
 AbstractSet 类提供 Set 接口的框架实现
 HashSet 类为基本操作提供固定时间性能
 TreeSet 类确保排序集将按元素升序
算法
Collections 类中的静态方法
用于排序、搜索、混排和数据操纵
方法的第一个参数是要执行操作的集合
重要异常
ClassCastException
UnsupportedOperationException
 Vector类
实现可变长度的对象数组
组件可以使用整型下标访问
构造函数
 Vector()
 Vector(Collection c)
 Vector(int cap)
 Vector(int cap,int inc)
ArrayList类
实现可变长度的对象数组
组件可以使用整型下标访问
构造函数
 ArrayList()

重要异常
ConcurrentModificationException
 在创建迭代器之后,除非通过迭代器自身的 remove 或 add 方法从结构上对列表进行修改,否则在任何时间以任何方式对列表进行修改,迭代器都会抛出 ConcurrentModificationException。
Vector与ArrayList比较
Vector 还是ArrayList�D�D哪一个更好,为什么? 要回答这个问题不能一概而论,有时候使用Vector比较好;有时是ArrayList,有时候这两个都不是最好的选择。你别指望能够获得一个简单肯定答案,因为这要看你用它们干什么。下面有4个要考虑的因素:
API
同步处理
数据增长性
使用模式
Hashtable类
以键值对的形式存储数据
键被散列,散列码用作存储值的下标
构造函数
Hashtable( )
Hashtable(int cap)
Hashtable(int cap, float load)
Hashtable(Map m)
HashMap类
以键值对的形式存储数据
键被散列,散列码用作存储值的下标
构造函数
HashMap(int?initialCapacity, float?loadFactor)
HashMap(int?initialCapacity)
HashMap()
重要异常
ConcurrentModificationException
 在创建迭代器之后,除非通过迭代器自身的 remove 或 add 方法从结构上对列表进行修改,否则在任何时间以任何方式对列表进行修改,迭代器都会抛出 ConcurrentModificationException。
Hashtable与HashMap比较
            Hashtable的方法是同步的,而HashMap的方法不是
            HashMap可以让你将空值作为一个表的条目的key或value 。

什么是接口(Interface)
一个java接口(Interface)是一些方法特征的集合,一个java接口只有方法的特征,而没有它的实现方法,因此这些方法在不同的地方被实现时,可以具有完全不同的行为。
一个接口表示:“所有实现了该特定接口的类看起来都像它”,因此,接口用来建立类与类之间的“协议(protocol)”.
接口与类的区别:接口仅给出方法的特征,而没有方法的实现;而类不仅给出方法的特征,而且给出方法的实现。

接口是对可插入性的保证
 -关联的可插入性
 -调用的可插入性
 接口提供了关联以及方法调用的可插入性,软件系统的规模越大,生命周期越长,接口的重要性就越大,接口使得软件系统的灵活性和可扩展性,可插入性方面得到了保证。
面向接口编程
面向接口编程,而不是针对实现编程
面向接口编程目的:解耦
基于接口设计代码
 例:List list = new ArrayList();
 而不是ArrayList arrayList = new ArrayList();
 维护时我们可以用LinkedList代替ArrayList:
 List list = new LinkedList();而不需做太多的改动。
 创建的类是被限制为提供接口的完全实现。可以增加系统的可扩展性,减少维护所做的改动。
设计模式(Design Pattern)
 
java异常种类
Error  动态链接失败,虚拟机错误等,通常Java程序不应该捕获这类异常,也不会抛弃这种异常。
Exception
 1)运行时异常(Runtime Exception):
  继承于RuntimeException的类都属于运行时异常,例如算术异常(除零错)、数组下标越界异常等等。由于这些异常产生的位置是未知的,Java 编译器允许程序员在程序中不对它们做出处理。
 2)非运行时异常(Checked Exception):
  除了运行时例外之外的其他由Exception 继承来的异常类都是非运行时的异常,例如FileNotFoundException(文件未找到异常)。Java编译器要求在程序中必须处理这种异常,捕获异常或者声明抛弃异常。
异常处理机制
抛弃(throw)异常:
 在Java程序的执行过程中,如果出现了异常事件,就会生成一个异常对象。生成的异常对象将传递给Java运行时系统,这一例外的产生和提交过程称为抛弃(throw)异常。
两种处理异常的机制:
 - 捕获异常
 -声明抛弃异常

捕获异常
捕获例外是通过try-catch-finally语句实现的:
   ◇ try
  捕获例外的第一步是用try{…}选定捕获例外的范围,由try所限定的代码块中的语句在执行过程中可能会生成例外对象并抛弃。
 ◇ catch
  每个try代码块可以伴随一个或多个catch语句,用于处理try代码块中所生成的例外事件。catch语句只需要一个形式参数指明它所能够捕获的例外类型,这个类必须是Throwable的子类,运行时系统通过参数值把被抛弃的例外对象传递给catch块。
 ◇ finally
  捕获例外的最后一步是通过finally语句为例外处理提供一个统一的出口,不论在try代码块中是否发生了异常事件,finally块中的语句都会被执行。
抛弃异常
声明抛弃异常
 声明抛弃例外是在一个方法声明中的throws子句中指明的。例如:
  public int read () throws IOException{
        ......
  }
抛出异常
 public void method1() throws CException { throw new CException("Test Exception");}
自定异常类的使用
自定义异常类必须是Throwable的直接或间接子类。
 示例代码:
 // 以 MVC Controller -> Business Delegate -> DAO三层间的调用为例说明
 public class DAOException extends java.lang.RuntimeException{
 public DAOException(Exception e){
 }
 }
 

你可能感兴趣的:(职场,java集合,休闲)