集合与框架、File、IO流简单整理笔记
集合与框架
集合:存储多个同类型的数据,长度可变。
ListIntface:有序、可以使用index、可以存在重复元素
SetIntface:可能无序、如果无序,不能使用index。元素不可重复。
MapIntface:使用key和value来存储数据,键是无序的,不能使用索引。键重复会覆盖掉上一次键所对应的值,值可以重复存在相同元素的。
List接口集合的取出方式有for 、foreach、iterator迭代器。
List的常用实现类:
ArrayList数组列表:使用数组实现,内存空间连续,遍历速度快,查找、修改效率高。
LinkedList链式列表:使用双向链表结构实现,内存空间不连续,删除、增加效率高。
list集合在删除其中一项,后面的项的角标就会减一,在集合中增加一项,后面项的角标会加1,所以在循环时候执行添加删除的时候需要主要角标的变化。
List集合常用方法:新创建的元素数量为0,每次添加会自动增加长度。
IndxOf(element)查找元素在集合中第一次出现的位置,返回元素对应的下标,如果没有找到返回-1;
Size(): 返回int元素数量;
add(element):添加元素;
add(index,element):插入添加元素,插入的指定最大索引为size();
Get(index):得到某一个索引对应的元素;
Set(index,element):修改元素;
Remove(index):移除index位置对应的元素。
Remove(element):只移除第一次匹配到的元素,如果是int元素,则先对元素进行转换为integer,在输入参数;
Clear():清除集合中所有的数据。
Set:
Hashset:无序,无索引,不可重复,遍历速度快,不易修改,可添加,可删除,无法直接修改。
添加数据的时候会底层调用equals方法比较,不允许相同的元素重复,就会添加失败。
Add():只能添加数据,无法使用add的重载使用插入,因为set没有下标,他是无序的。
Remove(element):只能删除元素,没有下标,无法通过指定index删除。
Clear():清除集合中所有的数据。
可以用foreach循环,和迭代器遍历。
迭代器Iterator: 中的next()方法会使指针后移一位。
Map:
hashMap:无序、无索引、键不可以重复,值可以重复。
常用方法:
Put(K,V):添加数据,如果输入相同的键会覆盖之前的键值,以达到修改的目的。
Get(key):通过key ,获取value。
Remove(key):删除这个key和这个key相对应的value。
keySet():返回这个map集合中的键的集合,返回集合类型是Set。
遍历出键,然后可以通过键去获取值。
Values():返回的是Collection集合的值,通过遍历该值的集合,可以获取到值。
Clear():清除集合中所有的数据。
containsKey(key):判断键是否存在。
Properties:键值都是固定的字符串。
Store(输出流对象,输出目标):可以将数据保存到硬盘上的文件,也可以将硬盘上的文件数据读取出来,其它的使用方式和Map都一样。
Load(输入流对象):可以将硬盘上的输入到内存。
Collections:
常用方法:
Shuffle(<List>element):洗牌方法,将当前集合内的数据进行随机排序。
Reverse(<List>element):逆序排序,对当前集合的元素按照相反的顺序进行排序
Sort(<List>element):对当前集合进行升序排序
实现Comparable接口的类,只能使用一种排序方案,这种方案叫作“自然比较”方案。
如果要实现多种方案进行排序,需要使用Comparator接口
Arrays中的方法和collections类似,只不过是操作数组。
String本身就实现了comparable接口,也实现了comparTo方法,我们可以直接调用该方法进行比较。
FILE
File类:用于读取文件或文件夹的信息(不包括内容)
文件:存储在硬盘,可以持久化保存数据。
绝对路径:从系统盘符开始寻找的路径。
相对路径:相对于工作目录,从当前目录开始找。
通常,访问工程内部的文件使用相对路径,外部的文件使用绝对路径。
file对象:文件和目录路径名的抽象表示形式。
File常用方法:
File(“filePath”):输入路径创建文件对象。
Exists():判断文件是否存在。
getName():获取文件名。
getPath():获取构造函数中传入的路径。
getAbsolutePath():获取绝对路径。
Length():获取文件大小,返回的是一个字节数。
lastModified():获取文件的修改日期,返回的是1970年到修改日期的long类型毫秒数。
Delete():删除文件,返回boolean是否成功。
List():返回这个文件夹所有的文件对象,返回一个String数组。
listFiles():返回该文件夹内的所有文件对象,返回到file数组中。
isDirectory():判断该文件是一个文件夹吗。
File.listRoots():返回的是系统盘,返回的是一个file[]。
renameTo():重命名,也就是移动文件。
IO
Stream 流:是一个连接内存和其他介质的通道
流的分类:
按照方向分类:输入流和输出流都是相对于内存
按照数据载体分类:字节流和字符流
Reader:字符输入流。
Writer:字符输出流。
inputStream:字节输入流。
outputStream:字节输出流。
I:input O: output
命名方式:介质名+抽象类名 (从内存到介质为目标,抽象类名为流类型方向)
FileReader
fileWriter
FileInputStream
FileOuputStream
Filewriter:
方法:
filewriter(file):创建字符输出流对象,目标介质是文件对象或者一个文件名,如果文件不存在会自动创建一个,如果文件夹不存在会报错。
Filewriter(file,boolean):创建字符输出流,目标介质是文件或者文件名,如果文件不存在会自动创建一个,如果文件夹不存在会报错,boolean参数为ture,表示输出内容自动添加到文本末尾,不再覆盖。
Write(内容):输出字符到介质中。
Close():刷新当前流并关闭当前流,不关闭其它文件就不能往该介质创建流。
Append(内容):添加char类型数据在文本末尾
FileReader:
常用方法:
Reader():将当前位置移动到下一个位置,并且返回该位置的字符编码,返回读取的int型编码,如果已到达流的末尾,则返回 -1 ,可以将字符编码转换为char 就可以显示字符。
FileInputStream 从文件系统中的某个文件中获得输入字节。哪些文件可用取决于主机环境 ,FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader。
FileOutputStream 文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流。文件是否可用或能否可以被创建取决于基础平台。特别是某些平台一次只允许一个 FileOutputStream(或其他文件写入对象)打开文件进行写入。在这种情况下,如果所涉及的文件已经打开,则此类中的构造方法将失败。
FileOutputStream 用于写入诸如图像数据之类的原始字节的流。要写入字符流,请考虑使用 FileWriter。
序列化:
对象序列化:将对象的数据使用二进制的格式,保存到介质中。
对象序列化:就是将内存中的对象序列化为一串二进制码输入到我们的持久化设备中进行保存,需要序列化的对象类型必须实现Serializable接口,将该类标记为可序列化。
方向:输出
数据载体:字节
ObjectOutputStream:ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream。可以使用 ObjectInputStream 读取(重构)对象。通过在流中使用文件可以实现对象的持久存储。如果流是网络套接字流,则可以在另一台主机上或另一个进程中重构对象。
方法:
ObjectOutputStream():建立对象输出流对象,传入一个输出流,方便将序列化后的数据传入进输出流进行数据传递,该底层流必须得确定将数据传送到哪个位置。
writeObject(输入需要被序列化写入的对象,并且该对象实现了Serializable接口):调用该方法进行写入数据。
对象反序列化:将保存了对象数据的二进制格式的介质的数据读取到对象中。
ObjectInputStream:ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化。
方向:输入
数据载体:字节
方法:
ObjectInputStream():建立对象输入流对象,传入一个输入流,方便将反序列化后的数据传递给底层流进行输送,该底层流要确定从哪里进行输入,也就是指定路径或者指定文件。
ReadObject():调用该方法进行写入数据,返回一个Object类型对象,可以强转为序列化之前的类型,进行使用。
。
2016-08-21
00:29:17

浙公网安备 33010602011771号