日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

源码梳理——Jedis中的集合JedisByteHashMap

發布時間:2024/4/17 编程问答 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 源码梳理——Jedis中的集合JedisByteHashMap 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、JedisByteHashMap

JedisByteHashMap是Jedis中實現存儲鍵和值均為byte[]字節數組的Map集合類,它利用HashMap作為鍵-值對實際存儲集合,對Map中的方法進行重寫來達到Jedis需要的存儲鍵-值對均為字節數組的需要。該類是非線程安全的。

二、源碼分析

該類實現上沒什么復雜的地方,個人覺得比較有趣的一個實現是對鍵進行了包裝。HashMap在實現鍵值對映射時,會調用鍵的equals和hashCode方法,byte[]數組這兩個方法均是從Object繼承而來,顯然不滿足需求,于是JedisByteHashMap中的內部類對byte[]數組進行了簡單的包裝來滿足需求,這實際上用到了適配器的設計思想。

private static final class ByteArrayWrapper {private final byte[] data;public ByteArrayWrapper(byte[] data) {if (data == null) {throw new NullPointerException();}this.data = data;}public boolean equals(Object other) {if (!(other instanceof ByteArrayWrapper)) {return false;}return Arrays.equals(data, ((ByteArrayWrapper) other).data);}public int hashCode() {return Arrays.hashCode(data);}}

同樣為了實現entrySet方法,返回鍵和值均為字節數組的Entry對象,JedisByteHashMap也實現了對Entry進行包裝的內部類

private static final class JedisByteEntry implements Entry<byte[], byte[]> {private byte[] value;private byte[] key;public JedisByteEntry(byte[] key, byte[] value) {this.key = key;this.value = value;}public byte[] getKey() {return this.key;}public byte[] getValue() {return this.value;}public byte[] setValue(byte[] value) {this.value = value;return value;}}```

總結

以上是生活随笔為你收集整理的源码梳理——Jedis中的集合JedisByteHashMap的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。