马士兵java note 5

如何选择数据结构java

Array 读快改慢数组

Linked改快读慢缓存

Hash二者之间数据结构

 

Map 接口编码

实现Map接口的类用来存储key-valuespa

Map接口的实现类有HashMap和TreeMap(二叉树)code

Map类中存储的key-value对经过键来标识,因此键值不能重复(equals is too slow, so that hashcode can be used)对象

Object put(Object key, Object value);继承

Object get(Object key)接口

Object remove(Object key)

Boolean containsKey(Object key)

Boolean containsValue()

 

Auto-boxing/unboxing

在合适的时机自动打包、解包:

自动将基础类型转换为对象

自动将对象转换为基础类型

 

JDK 1.5泛型

装入集合的类型都被看成Object对待,从而失去本身的实际类型

从集合中取出时每每须要转型               

解决办法:

在定义集合的时候同时定义集合中对象的类型

能够在定义Collection的时候指定

也能够在循环时用Iterator制定

 

好处:加强程序的可读性和稳定性

                              

Class Name implements Comparable<Name> {

Public String toString() {  }

Public Boolean equals(Object obj){}

Public int hashCode(){}

Public int compareTo(Name n){}

}

 

1136

一个图

一个类: Collections

三个知识点:

For

Generic

Auto-boxing/ unboxing

六个接口

 

在Java程序中,对于数据的输入/输出操做以stream方式进行

Java.io 包中定义了多个流类型来实现输入/输出功能;能够从不一样的角度进行分类:

按数据流的方向不一样能够分为输入流和输出流(站在程序的角度上)

按处理数据单位不一样能够分为字节流和字符流(一个字符两个字节)

按照功能不一样能够分为节点流和处理流

节点流为能够从一个特定的数据源(节点)读写数据(如 文件 内存)

处理流是链接在已存在的流之上,经过对数据的处理为程序提供更为强大的读写功能

 

J2SDK所提供的全部流类型位于包java.io 内都分别继承自如下四种抽象流类型

 

字节流

字符流

输入流

InputStream

Reader

输出流

OutputStream

Writer

 

InputStream的基本方法:

Int read() throws IOException // 读取一个字节并以整数的形式返回 0~255;若是返回-1已到输入流的末尾

 

Int read (byte [] buffer) throws IOException //读取一系列字节并存储到一个数组buffer

//返回实际读取的字节数,若是读取前已到输入流的末尾返回-1

 

Int read(byte[] buffer, int offset, int length) throws IOException

//读取length个字节

//并存储到一个字节数组buffer,从offset位置开始

//返回实际读取的字节数,若是读取前以到输入流的末尾返回-1

 

Void close () throws IOException // 关闭流释放内存资源

Long skip(long n) throws IOException //跳过n个字节不读,返回实际跳过的字节数

 

OutputStream的基本方法

Void write (int b) throws IOException

Void write (byte[] b) throws IOException

Void write (byte[] b, int off, int len) throws IOException

Void close()throws IOException

Void flush ()throws IOException //将输出流中缓冲的数据所有写出目的地

先写 flush再写close

 

Reader

 

Reader的基本方法和inputStream基本一致 只是读出是字符

 

Void write (String string) throws IOException //将一个字符串中的字符写入到输出流

(这里用到String类的toCharArray方法)

 

节点流

类型

字符流

字节流

File

FileReader

FileWriter

FileInputStream

FileOutputStream

Memory Array

CharArrayReader

CharArrayWriter

ByteArrayInputStream

ByteArrayOutputStream

Memory String

StringReader

StringWriter

 

Pipe

PipedReader

PipedWriter

PipedInputStream

PipedOutputStream

处理流类型

处理类型

字符流

字节流

Buffering

BufferedReader

BufferedWriter

BufferedInputStream

BufferedOutputStream

Filtering

FilterReader

FilterWriter

FilterInputStream

FilterOutputStream

Converting between bytes and character

InputStreamReader

OutputStreamWriter

 

Object Serialization

 

ObjectInputStream

ObjectOutputStream

Data conversion

 

DataInputStream

DataOutputStream

Counting

LineNumberReader

LineNumberInputStream

Peeking ahead

pushbackReader

PushbackInputStream

Printing

PrintWriter

PrintStream

缓冲流

缓冲流要“套接在相应的节点流之上,对读写的数据提供了缓冲的功能,提升了读写的效率,同时增长了一些新的方法

构造方法:

BufferedReader (Reader in)

BufferedReader(Reader in , int sz) //sz为自定义缓存区的大小

BufferedWriter(Writer out)

BufferedWriter(Writer out, int sz)

BufferedInputStream(InputStream in)

BufferedInputStream(InputStream in,int size)

BufferedOutputStream(OutputStream out)

BufferedOutputStream( OutputStream out, int size)

 

l  缓冲输入流支持其父类mark和reset 方法

l  BufferedReader提供了readline方法用于读取一行字符串(以\r 或 \n 分隔)

l  BufferedWriter提供了newLine用于写入一个行分隔符

l  对于输出的缓冲流,写出的数据会先在内存中缓存,使用flush方法将会使内存中的数据马上写出

                              

转换流

inputStreamReader and OutputStreamWriter用于字节数据到字符数据之间的转换

inputStreamReader 须要和InputStream 套接 把input Stream转换成reader

OutputStreamWriter 须要和 OutputStream 套接 把outputStream 转换成 writer

转换流在构造时能够指定其编码集合

 

FileOutputStream(“address of file”, true) // true的意思是在文件的后面续写

 

数据流

l  DataInputStream 和 DataOutputStream 分别继承自InputStream和OutputStream, 它属于处理流,须要分别套接在InputStream和OutputStream类型的节点流上

l  DataInputStream和DataOutputStream提供了能够存取与机器无关的Java原始类型数据(如:int、double等)的方法

l  DataInputStream和DataOutputStream的构造方法为:

w   DataInputStream(InputStream in)

w   DataOutputStream( OutputStream out)

 

PrintWriter 和 PrintStream都属于输出流,分别针对字符和字节

PrintWriter和printStream提供了重载的print

Println方法用于多种数据类型的输出

printWriter和printStream的输出操做不会抛出异常,用户经过检测错误状态获取错误信息

printWriter和PrintStream有自动flush功能

 

printWriter(Writer out)

PrintWriter(Writer out, Boolean autoFlush)

Printwriter( OutputStream out)

printWriter(OutputStream out,Boolean autoFlush)

printStream(OutputStream out)

printStream(OutputStream out, booleanautoFlush)

 

Object 流

直接将Object写入或读出

Serializable接口 标记性接口,表示能够对object进行序列化

Transient修饰 把object里面的成员变量变透明

Externalizable接口里面的方法 readExternal(ObjectInput in) writerExternal(ObjectOutput out)本身实现序列化的过程

 

总结

InputStream/OutputStream

Reader/Writer

FIleInputStream/FileOutputStream

FileReader/FileWriter

BufferedInputStream/

BufferedReader/

BytearrayInputStream/

InputStreamReader/

DataInputStream/

PrintStream/Printwriter

ObjectinputStream

相关文章
相关标签/搜索