结合框架
Collection接口和Iterator接口

在集合框架中,集合(Collection)接口位于Set接口和List接口的最顶层,是Set接口和List接口的父接口。
1.List接口
(1)
① List中的元素是有顺序的。
② List通常允许重复元素。
③ List的实现类通常支持null元素。
④ 可以通过索引访问List对象容器中的元素。
(2)ArrayList
ArrayList在概念上与数组类似,表示一组编入索引的元素,区别之处在于ArrayList没有预先确定的大小,其长度可按需增大。
泛型:泛型,就是允许在定义类、接口时指定类型形式参数,这个类型形式参数将在声明变量、创建对象时确定(即传入的实际参数)。
terator接口是一种用于遍历集合的接口。遍历,是指从集合中取出每一个元素的过程.

(3)LinkedList
① LinkedList是实现了双向链表功能的列表,它将列表中的每个对象放在独立的空间中,而且每个空间中还保存有上一个和下一个链接的索引
② LinkedList不支持快速随机访问,如果要访问LinkedList中第n个元素,必须从头开始查找,然后跳过前面的n-1个元素。所以访问LinkedList元素时,性能会比较低下。

(4)Voctor
ava.util.vector提供了向量类(vector)以实现类似动态数组的功能

2.Set接口
(1)Set类型容器中不能包含重复元素。当加入一个元素到容器中时候,要比较元素的内容是否存在重复的,所以加入Set类型对象容器的对象必须重写equals()方法。
(2)元素可能有顺序,也可能没有顺序。
(3)因为元素可能没有顺序,所以不能基于索引访问Set中的元素。
1.HashSet
HashSet类是基于哈希算法的Set接口实现,它主要有如下几个特点:
(1)当遍历HashSet时,其中的元素是没有顺序的。
(2)HashSet中不允许出现重复元素。这里的重复元素是指有相同的哈希码,并且用equals()方法进行比较时,返回true的两个对象。
(3)允许包含null元素。

2.TreeSet
TreeSet类不仅实现类Set接口,还实现了SortedSet接口,从而保证集合中的对象按照一定的顺序排序。当向TreeSet集合中添加一个对象时,会把它插入到有序的对象序列中。但是这种排序并不是按照对象添加的顺序排序,而是按照一定的算法来排序。

Map接口
1.HashMap类
(1)HashMap类实现了Map接口,从而具有Map接口的所有方法
(2)HashMap是基于哈希算法的Map接口的实现。HashMap将它的键保存在哈希表中进行维护,键是唯一的
(3)HashMap使用哈希码通过键对其内容进行快速查找,但是HashMap中的元素是没有顺序的。如果要让Map中的元素按照一定的顺序排列,就要使用TreeMap类。

2.TreeMap类
返回Collections中最大元素(max)
(1)TreeMap类是基于红黑树算法的Map接口实现。TreeMap中键的存放方式与TreeSet相似,它将键存放在树中,键的顺序按照自然顺序或者自定义顺序两种方式排列。
(2)TreeMap类的基本方法与HashMap类相似。代码清单15.10所示的TreeMapDemo程序演示了TreeMap的常用功能。
工具类Collections
工具类collections用于操作集合类,如List,Set
1.排序。使用sort方法可以根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此列表内的所有元素都必须是使用指定比较器可相互比较的
2.反转。使用Reverse方法可以根据元素的自然顺序 对指定列表按降序进行排序。
3.替换所有元素。使用指定元素替换指定列表中的所有元素
4.返回Collections中最小元素(min)
5.返回Collections中最大元素(max)

IO流
概述
1.概念:具有方向和流质的抽象
2.作用: 内外部进行通讯
分类
1.按照方向
(1)输入流:程序到文件
(2)输出流: 文件到程序
2.按照处理数据的最小单位的不同分
(1)字节流:字节流是以byte为最小单位进行数据传送。io包中的字节流都继承自抽象类InputStream或OutputStream。
(2)字符流:字符流是以char为最小单位进行数据传送。io包中的字符流都继承自抽象类Reader或者Writer。
3.按照流功能分
(1)节点流: 节点流是可以直接从/向一个特定的数据源(例如磁盘文件、内存、网络)读/写数据的流。节点流也称低级流。
(2)处理流:处理流不直接连接到设备,而是连接在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更强大的读写功能,如图17.5所示。处理流也称高级流。
文件类
java.io包中的File类提供了管理磁盘文件和目录的基本功能。
四个构造方法
1.public File(String pathname)。创建一个与指定路径名关联的File对象。
2.public File(String parent, String child)。使用指定参数创建一个File对象。参数parent代表一个目录,参数child代表在parent中的子目录或文件。
3.public File(File parent, String child)。与上一个构造器相同,除了目录是用一个File对象而不是一个字符串来表示。
4.public File(URI uri)。使用给定的java.net.URI对象创建一个File对象。URI是统一资源标识符,一个文件的URI是“file:///目录/文件名”格式。
字节流
1.概述:字节流用于处理二进制文件,所有字节流都继承于抽象类InputStream和OutputStream两个父类,其中InputStream为读取字节流的父类,OutputStream为写入字节流的父类
2.低级字节流:根据其输入和输出的设备或数据源,分为三类:
(1)对内存缓冲区中的字节数组进行读写操作的ByteArrayInputStream和ByteArrayOutputStream类,其数据源是内存中的字节数组。
(2)对线程管道进行读写操作的PipedInputStream和PipedOutputStream类,其数据源是线程管道。
(3)对二进制文件进行读写操作的FileInputStream和FileOutputStream类,其数据源是磁盘文件。
3.高级字节流:高级字节流对低级字节流进行了封装,并有许多功能的扩展。高级字节流根据其功能分为三大类:
(1)过滤流类
①数据流:包括DataInputStream 和 DataOutputStream,可以用与计算机无关的格式读写Java的基本数据类型以及String对象。
②计数:包括LineNumberInputStream类,允许在翻译行结束符的基础上,维护一个计数器,该
③推回输入流:包括PushbackInputStream类,代表一个流允许从流中读取数据,然后在需要时推回该流。
④打印输出流:包括PrintStream类,允许将基本类型数据打印输出到字符串流中,带有自动刷新功能。
⑤对象流:包括ObjectInputStream和ObjectOutputStream,允许直接对对象执行读写操作。
⑥缓冲流:包括BufferedInputStream 和 BufferedOutputStream,这两个类实现了带缓冲的过滤流。
⑦合并:SequenceInputStream类可以实现两个文件的合并操作,它从两个低级流中读取数据字节,当到达流的末尾时从一个流转到另一个流 ,从而实现合并操作
(2)对象流:包括ObjectInputStream和ObjectOutputStream,允许直接对对象执行读写操作。
字符流
1.概述:字符流用于处理文本文件,所有字符流都继承于抽象类Reader和Writer两个父类。其中Reader为读取字符流的父类, Writer为写入字符流的父类
2.低级字符流:
(1)对内存数组进行操作的CharArrayReader和CharArrayWriter类,与ByteArrayInputStream和ByteArrayOutputStream类似,其数据源为内存中的字符数组。
(2)对内存中的String对象进行操作的StringReader和StringWriter类,其数据源为内存中的String对象。
(3)对线程管道进行操作的PipedReader和PipedWriter类,与PipedInputStream和PipedOutputStream类似,其数据源为线程管道。
(4)对文本文件进行读写操作的FileReader和FileWriter类,与FileInputStream和FileOutputStream类似,其数据源为磁盘文件。FileReader和FileWriter按照本地操作系统平台的默认字符编码,读写文件。
3.高级字符流
(1)缓冲流:包括BufferedReader和BufferedWriter类,利用缓冲区来提高读写数据的效率。
(2)转换流:用于字节数据到字符数据之间的转换,包括InputStreamReader和OutputStreamWriter。
(3)打印输出流:包括PrintWriter类,允许将基本类型数据打印输出到字符串流中,PrintWriter带有带自动刷新(Flush)功能。

10-05 17:32