1. 程式人生 > >【轉載】Java基本型別的Writable封裝

【轉載】Java基本型別的Writable封裝

Java基本型別的Writable封裝

目前Java基本型別對應的Writable封裝如表所示

螢幕快照 2016-03-08 上午10.44.07

所有這些Writable類都繼承自WritableComparable。也就是說,它們是可比較的。

同時,它們都有get()set()方法,用於獲得設定封裝的值。

對整形(intlong)進行編碼的時候,有固定長度格式IntWritableLongWritable)和可變長度格式VIntWritableVLongWritable)兩種選擇。

固定長度格式的整形,序列化後的資料是定長的,而可變長度格式則是用一種比較靈活的編碼方式,對於數之比較小的整形,它們往往比較節省空間

同時,由於VIntwritableVLongWritable的編碼規則是一樣的,所以VIntwritable的輸出可以用VLongWritable讀入。

下面以VLongWritable為例,說明WritableJava基本類封裝實現。

程式碼如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 public class VIntWritable implements WritableComparable & lt ; VIntWritable & gt ; {   
private int value ;      public VIntWritable ( ) { }      public VIntWritable ( int value ) { set ( value ) ; }      /** 設定VIntWritable的值. */    public void set ( int value ) { this . value = value ; }      /** 獲取VIntWritable的值. */    public int get ( ) { return value ; }      @ Override    public void readFields ( DataInput in ) throws IOException {      value = WritableUtils . readVInt ( in ) ;    }      @ Override    public void write ( DataOutput out ) throws IOException {      WritableUtils . writeVInt ( out , value ) ;    }      /** Returns true iff <code>o</code> is a VIntWritable with the same value. */    @ Override    public boolean equals ( Object o ) {      if ( ! ( o instanceof VIntWritable ) )        return false ;      VIntWritable other = ( VIntWritable ) o ;      return this . value == other . value ;    }      @ Override    public int hashCode ( ) {      return value ;    }      /** Compares two VIntWritables. */    @ Override    public int compareTo ( VIntWritable o ) {      int thisValue = this . value ;      int thatValue = o . value ;      return ( thisValue & lt ; thatValue ? - 1 : ( thisValue == thatValue ? 0 : 1 ) ) ;    }       @ Override    public String toString ( ) {      return Integer

相關推薦

轉載Java基本型別的Writable封裝

Java基本型別的Writable封裝 目前Java基本型別對應的Writable封裝如表所示 所有這些Writable類都繼承自WritableComparable。也就是說,它們是可比較的。 同時,它們都有get()和set()方法,用於獲得和設定封裝的值。 對整形(int和long

轉載JAVA中IO流操作的基本規律總結

reader 對象 作文 若是 gpo 是否 目的 io流 基本 流操作的基本規律:三個明確 1.明確源和目的; 源:輸入流即讀取流 InputStream,Reader 目的:輸出流即寫入流 OutputStream, Writer 2.明確操作的數據是

轉載Java中Comparable和Comparator比較

import 比較器 todo itl 復制代碼 ack div array open 【本文轉自】http://www.cnblogs.com/skywang12345/p/3324788.html Comparable 簡介 Comparable 是排序接口。 若一

轉載WEBRTC基本介紹

webrtc 數據流 應用 帶寬 工作 ogl 回聲 real 明顯 “WebRTC,名稱源自網頁實時通信(Web Real-Time Communication)的縮寫,是一個支持網頁瀏覽器進行實時語音對話或視頻對話的技術,是谷歌2010年以6820萬美元收購

轉載JAVA多線程讀取、操作List集合

線程 nbsp static 一點 stat lang 素數 param 應用 本文轉載自:http://blog.csdn.net/wang1989cs/article/details/47663565 import java.util.ArrayList; impor

轉載java 客戶端鏈接不上redis解決方案 (jedis)

主機 rom number table 出現 gin 現在 start http 本文出自:http://blog.csdn.net/lulidaitian/article/details/51946169 出現問題描述: 1.Could not get a resou

轉載java 獲取路徑的各種方法

strong filepath 文件路徑 etc dex 讀取 workspace for class 轉載只供個人學習參考,查看請前往原出處:http://www.cnblogs.com/guoyuqiangf8/p/3506768.html 主要方法有: (1)、req

轉載Java DecimalFormat 用法

最快 public oid get div 科學計數 科學 符號 一個 轉載只供個人學習參考,以下查看請前往原出處:http://blog.csdn.net/wangchangshuai0010/article/details/8577982 我們經常要將數字進行格式化,比

轉載JAVA學習路線二

get rocket 原理 aop 二次 三次握手 active AD cpu JAVA學習路線二------------高階面試 作者:Java高級進階鏈接:https://zhuanlan.zhihu.com/p/35301291來源:知乎著作權歸作者所有。商業轉載請聯

轉載JAVA字符串格式化-String.format()的使用

對數 print 英文月份 兩種 local 之前 width 標記 散列碼 常規類型的格式化 String類的format()方法用於創建格式化的字符串以及連接多個字符串對象。熟悉C語言的同學應該記得C語言的sprintf()方法,兩者有類似之處。format()方法有兩

轉載Java 中帶參無返回、帶參帶返回值、方法的重載

語法 ble 數組 實現 執行 愛慕 包含 參數 com 一、 有時方法的執行需要依賴於某些條件,換句話說,要想通過方法完成特定的功能,需要為其提供額外的信息才行。例如,現實生活中電飯鍋可以實現“煮飯”的功能,但前提是我們必須提供食材,如果我們什麽都不提供,那就真是的“巧婦

轉載Java 中帶參無返回、帶參帶返回值、方法的過載

一、 有時方法的執行需要依賴於某些條件,換句話說,要想通過方法完成特定的功能,需要為其提供額外的資訊才行。例如,現實生活中電飯鍋可以實現“煮飯”的功能,但前提是我們必須提供食材,如果我們什麼都不提供,那就真是的“巧婦難為無米之炊”了。我們可以通過在方法中加入引數列表接收外部傳入的資料資訊,引數可以是任意的基

轉載Java 從原字符串中截取一個新的字符串 subString()

處的 src fbo urg 字符 bsp .html return exceptio substring public String substring(int beginIndex) 返回一個新的字符串,它是此字符串的一個子字符串。該子字符串從指定索引處的字符開始,直到

轉載Java 從原字串中擷取一個新的字串 subString()

substring public String substring(int beginIndex) 返回一個新的字串,它是此字串的一個子字串。該子字串從指定索引處的字元開始,直到此字串末尾。 示例: "unhappy".substring(2) returns

轉載JS Number型別數字位數及IEEE754標準

JS的基礎型別Number,遵循 IEEE 754 規範,採用雙精度儲存(double precision),佔用 64 bit。如圖   意義 1位用來表示符號位 11位用來表示指數 52位表示尾數   浮點數,比如

轉載Java異常控制機制和異常處理原則

轉載自Java異常控制機制和異常處理原則 Java異常控制機制又被稱為“違例控制機制”。 捕獲程式錯誤最理想的時機是在編譯階段,這樣可以徹底避免錯誤的程式碼執行。但並非所有的錯誤都能在編譯期間偵測到,有些問題必須在執行期間解決。 錯誤在執行期間發生時,我們可能不知道具體應該怎樣解決,但我

轉載Java IO 轉換流 位元組轉字元流

位元組流輸入位元組流:---------| InputStream 所有輸入位元組流的基類。 抽象類。------------| FileInputStream 讀取檔案的輸入位元組流。------------| BufferedInputStream 緩衝輸入位元組流。 該類內部其實就是維護了一個8kb(8

轉載Java IO基礎總結

stream name lse rect block 文件操作 讀數 pla ex18 Java中使用IO(輸入輸出)來讀取和寫入,讀寫設備上的數據、硬盤文件、內存、鍵盤......,根據數據的走向可分為輸入流和輸出流,這個走向是以內存為基準的,即往內存中讀

轉載Java併發程式設計:Lock

Java併發程式設計:Lock   在上一篇文章中我們講到了如何使用關鍵字synchronized來實現同步訪問。本文我們繼續來探討這個問題,從Java 5之後,在java.util.concurrent.locks包下提供了另外一種方式來實現同步訪問,那就是Lock。

轉載CSS基本介紹

https://www.cnblogs.com/wj-1314/articles/8372503.html   CSS基本介紹 一,我們為什麼需要CSS?   使用css的目的就是讓網頁具有美觀一致的頁面,另外一個最重要的原因是內容與格式分離 在沒有CSS之前,我們想要修改