今天新的内容
1、List接口
2、Set接口
3、Map集合
4、异常
============================================================================
1 List接口的特点
1.1:它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理)。
1.2:集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素。
1.3:List接口的常用子类有:
 ArrayList集合
 LinkedList集合
2 List接口的特有方法
2.1:List接口的特有方法(带索引的方法)
a:增加元素方法
 add(Object e):向集合末尾处,添加指定的元素
 add(int index, Object e) 向集合指定索引处,添加指定的元素,原有元素依次后移
2.2:删除元素
 remove(Object e):将指定元素对象,从集合中删除,返回值为被删除的元素
 remove(int index):将指定索引处的元素,从集合中删除,返回值为被删除的元素
2.3:替换元素方法
 set(int index, Object e):将指定索引处的元素,替换成指定的元素,返回值为替换前的元素
2.4:查询元素方法
 get(int index):获取指定索引处的元素,并返回该元素
3 迭代器的并发修改异常
迭代器的并发修改异常 java.util.ConcurrentModificationException
就是在遍历的过程中,使用了集合方法修改了集合的长度,不允许的

原因
运行上述代码发生了错误 java.util.ConcurrentModificationException这是什么原因呢?
在迭代过程中,使用了集合的方法对元素进行操作。
导致迭代器并不知道集合中的变化,容易引发数据的不确定性。

并发修改异常解决办法:
在迭代时,不要使用集合的方法操作元素。
或者通过ListIterator迭代器操作元素是可以的,ListIterator的出现,解决了使用Iterator迭代过程中可能会发生的错误情况。

4 数据的存储结构
a:栈结构:后进先出/先进后出(手枪弹夹)
b:队列结构:先进先出/后进后出(银行排队)
c:数组结构:
查询快:通过索引快速找到元素
增删慢:每次增删都需要开辟新的数组,将老数组中的元素拷贝到新数组中
开辟新数组耗费资源
d:链表结构
查询慢:每次都需要从链头或者链尾找起
增删快:只需要修改元素记录的下个元素的地址值即可不需要移动大量元素
4.1ArrayList集合的自身特点 底层采用的是数组结构
4.2LinkedList集合的自身特点 底层采用链表结构,每次查询都要从链头或链尾找起,查询相对数组较慢
5 LinkedList特有方法 获取,添加,删除
6 Vector类的特点 (仅仅了解即可)
Vector集合数据存储的结构是数组结构,为JDK中最早提供的集合,它是线程同步的
Vector中提供了一个独特的取出方式,就是枚举Enumeration,它其实就是早期的迭代器。
此接口Enumeration的功能与 Iterator 接口的功能是类似的。
Vector集合已被ArrayList替代。枚举Enumeration已被迭代器Iterator替代。
7 Set接口的特点
7.1:它是个不包含重复元素的集合。
7.2:Set集合取出元素的方式可以采用:迭代器、增强for。
7.3:Set集合有多个子类,这里我们介绍其中的HashSet、LinkedHashSet这两个集合。

8 Set集合存储和迭代
A:Set集合存储和迭代
Set接口的实现类,HashSet (哈希表)
特点: 无序集合,存储和取出的顺序不同,没有索引,不存储重复元素
代码的编写上,和ArrayList完全一致
9 HashSet集合的自身特点:
存储,取出都比较快
线程不安全,运行速度快
10 LinkedHashSet集合
A:LinkedHashSet集合
继承自HashSet
LinkedHashSet 自身特性,具有顺序,存储和取出的顺序相同的
线程不安全的集合,运行速度块
11 Map集合概述
11.1:Map集合概述:
Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同
 a:Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。

b:Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。

Collection中的集合称为单列集合,Map中的集合称为双列集合。
 需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。
Map
|--HashMap
|--LinkedHashMap
12 Map接口中的常用方法
12.1使用Map接口的实现类 HashMap
移除集合中的键值对,返回被移除之前的值
remove()
put()
get()
12.2 Map集合遍历方式keySet方法
Map集合遍历方式keySet方法
1.获取Map集合中所有的键,由于键是唯一的,所以返回一个Set集合存储所有的键
2.遍历键的Set集合,得到每一个键
3.根据键利用get(key)去Map找所对应的值

12.3Map集合Entry对象
A:Map集合Entry对象
interface Map{
interface Entry{//Entry是Map的一个内部接口
//由Map的子类的内部类实现

}
}

在Map类设计时,提供了一个嵌套接口:Entry。
Entry将键值对的对应关系封装成了对象。
即键值对对象,这样我们在遍历Map集合时,就可以从每一个键值对(Entry)对象中获取对应的键与对应的值。
a:Entry是Map接口中提供的一个静态内部嵌套接口。
b:相关方法
 getKey()方法:获取Entry对象中的键
 getValue()方法:获取Entry对象中的值
 entrySet()方法:用于返回Map集合中所有的键值对(Entry)对象,以Set集合形式返回。

12.4Map集合遍历方式entrySet方法
* Map集合获取方式
* entrySet方法,键值对映射关系(结婚证)获取
* 实现步骤:
* 1. 调用map集合方法entrySet()将集合中的映射关系对象,存储到Set集合
* Set<Entry <K,V> >
* 2. 迭代Set集合
* 3. 获取出的Set集合的元素,是映射关系对象
* 4. 通过映射关系对象方法 getKet, getValue获取键值对
*
*
*/
13 什么是异常
Java代码在运行时期发生的问题就是异常。
在Java中,把异常信息封装成了一个类。
当出现了问题时,就会创建异常类对象并抛出异常相关的信息(如异常出现的位置、原因等)。
14 异常的继续体系和错误的区别
14.1异常的继承体系
Throwable: 它是所有错误与异常的超类(祖宗类)
|- Error 错误
|- Exception 编译期异常,进行编译JAVA程序时出现的问题
|- RuntimeException 运行期异常, JAVA程序运行过程中出现的问题
14.2 异常与错误的区别
* a:异常
* 指程序在编译、运行期间发生了某种异常(XxxException),我们可以对 异常进行具体的处理。
* 若不处理异常,程序将会结束运行。

* b:错误
* 指程序在运行期间发生了某种错误(XxxError),Error错误通常没有具体的处理方式,程序将会结束运行。
* Error错误的发生往往都是系统级别的问题,都是jvm所在系统发生的, 并反馈给jvm的。
* 我们无法针对处理,只能修正代码。

15 异常对象的产生原因和处理方式
15.1异常的处理方式
* a:JVM的默认处理方式
* 把异常的名称,原因,位置等信息输出在控制台,同时会结束程序。
* 一旦有异常发生,其后来的代码不能继续执行。
* b:解决程序中异常的手动方式
* a):编写处理代码 try...catch...finally
* b):抛出 throws

16 try...catch异常处理
16.1: 捕获
* Java中对异常有针对性的语句进行捕获,可以对出现的异常进行指定方式的处理
16.2: 捕获异常格式
try {
//需要被检测的语句。
}
catch(异常类 变量) { //参数。
//异常的处理语句。
}
finally {
//一定会被执行的语句。
}
16.3: 格式说明
* a: try
* 该代码块中编写可能产生异常的代码。
* b: catch
* 用来进行某种异常的捕获,实现对捕获到的异常进行处理。
* c: finally:
* 有一些特定的代码无论异常是否发生,都需要执行。
* 另外,因为异常会引发程序跳转,导致有些语句执行不到。
* 而finally就是解决这个问题的,在finally代码块中存放的代码都是一定会被执行的。
* d:try...catch...处理掉异常后,程序可以继续执行
17 调用抛出异常方法try和throws处理方式
* A: 在实际开发中使用哪种异常处理方式呢?
* 能自己处理的尽量自己处理。(建议用try...catch)

18 运行时期异常的特点
* A: 运行时期异常的概述:
* RuntimeException和他的所有子类异常,都属于运行时期异常。
NullPointerException,ArrayIndexOutOfBoundsException等都属于运行时期异常.
* B:运行时期异常的特点
* a:方法中抛出运行时期异常,方法定义中无需throws声明,调用者也无需处理此异常。
* b:运行时期异常一旦发生,需要程序人员修改源代码。
设计原因:
运行异常,不能发生,但是如果发生了,程序人员停止程序修改源代码
运行异常: 一旦发生,不要处理,请你修改源代码,运行异常一旦发生,后面的代码没有执行的意义

C:例子

19 Throwable类方法
19.1: 常见方法
* a:getMessage()方法
返回该异常的详细信息字符串,即异常提示信息
* b:toString()方法
返回该异常的名称与详细信息字符串
* c:printStackTrace()方法
在控制台输出该异常的名称与详细信息字符串、异常出现的代码位置
19.2例子

最新文章

  1. python的编码规范【摘】
  2. iOS资源整理
  3. (转)PhoneGap开发环境搭建
  4. PHP静态延迟绑定
  5. [百科] - iLBC
  6. C# 线程--第三线程池
  7. 从内部剖析C#集合之HashTable
  8. docker 网络4种模式
  9. ACM大数模板(支持正负整数)
  10. 掌握NIO,程序人生
  11. java构造器执行顺序一个有趣的简单实例
  12. HDU 5983(模拟魔方 模拟)
  13. std unorder_map insert 和 emplace的区别
  14. call apply bind的区别
  15. flex下部固定高,上部不固定,而且超过内容要滚动
  16. WebForm 【发送邮件】
  17. 【java】函数概述
  18. java web 大文件下载
  19. 将html转换为Drupal模板文件的一般步骤
  20. nginx怎么与tomcat完美结合

热门文章

  1. windows下matplotlib的安装
  2. hdu 4632 回文子序列计数
  3. 【javascript常见面试题】常见前端面试题及答案
  4. php redis 操作手册
  5. 一根Express Route同时支持ARM和ASM的VNET
  6. Pager分页
  7. linux指令 apt-grt指令使用
  8. spring容器启动的三种方式
  9. Rails的静态资源管理(五)—— 自定义 Asset Pipeline
  10. oracle错误-ORA-12519, TNS:no appropriate service handler found