馬士兵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

相關文章
相關標籤/搜索