Java實(shí)現(xiàn)byte[]轉(zhuǎn)List的示例代碼
前言
其實(shí)這個(gè)工具是給自己寫(xiě)的,因?yàn)樽约豪鲜峭?。所以記錄一下?/p>
Maven依賴
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.1.1-jre</version>
</dependency>
代碼
package ai.guiji.csdn.tools;
import com.google.common.primitives.Bytes;
import java.util.Arrays;
import java.util.List;
/** @Author 劍客阿良_ALiang @Date 2022/1/26 14:51 @Description: byte工具 */
public class ByteUtils {
/**
* 字節(jié)組轉(zhuǎn)list
*
* @param bytes 字節(jié)組
* @return List
*/
public static List<Byte> bytesToList(byte[] bytes) {
return Bytes.asList(bytes);
}
/**
* list轉(zhuǎn)字節(jié)組
*
* @param list list
* @return byte[]
*/
public static byte[] listToBytes(List<Byte> list) {
return Bytes.toArray(list);
}
/**
* 截取bytes
*
* @param bytes 字節(jié)組
* @param from 起始位
* @param to 結(jié)束位
* @return bytes
*/
public static byte[] subBytes(byte[] bytes, int from, int to) {
return Arrays.copyOfRange(bytes, from, to);
}
}代碼說(shuō)明
1、主要通過(guò)guava工具包來(lái)實(shí)現(xiàn),代碼簡(jiǎn)潔。
補(bǔ)充
java不僅能實(shí)現(xiàn)byte[]轉(zhuǎn)List,還能實(shí)現(xiàn)Map、List和byte[]互轉(zhuǎn)
Map轉(zhuǎn)換成byte[]可以通過(guò)先將Map轉(zhuǎn)換成json,然后再將json轉(zhuǎn)換成byte[],List和byte[]互轉(zhuǎn)思路是一樣的。
//將map轉(zhuǎn)換成byte[]
protected byte[] changeMapToByte(Map<String,String> map) {
byte[] bytes = null;
try {
bytes = JsonSerilizable.serilizableForMap(map).getBytes();
} catch (Exception e) {
baselog.error("map到byte[]轉(zhuǎn)換異常",e);
}
return bytes;
}
//將byte[]轉(zhuǎn)換成map
protected Map<String, String> changeByteToMap(byte[] bytes) {
Map<String, String> retmap = null;
try {
if(bytes != null) {
retmap = JsonSerilizable.deserilizableForMapFromFile(new String(bytes), String.class);
}else {
baselog.error("changeByteToMap中bytes為null");
}
} catch (Exception e) {
baselog.error("byte到map轉(zhuǎn)換異常",e);
}
return retmap;
}
JsonSerilizable類(lèi)代碼如下:
package com.jd.goldeneye.stat.common;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.jd.fastjson.JSON;
import com.jd.fastjson.TypeReference;
public class JsonSerilizable {
/* 將鏈表序列化為字符串存入json文件中 */
public static String serilizableForList(Object objList)
throws IOException {
String listString = JSON.toJSONString(objList, true);// (maps,CityEntity.class);
return listString;
}
/* 將json文件中的內(nèi)容讀取出來(lái),反序列化為鏈表 */
public static <T> List<T> deserilizableForListFromFile(String listString2,Class<T> clazz)
throws IOException {
List<T> list2 = JSON.parseArray(listString2, clazz);
return list2;
}
/* 將HashMap序列化為字符串存入json文件中 */
public static String serilizableForMap(Object objMap)
throws IOException {
String listString = JSON.toJSONString(objMap, true);// (maps,CityEntity.class);
return listString;
}
/* 將json文件中的內(nèi)容讀取出來(lái),反序列化為HashMap */
public static <T, K> HashMap<K, T> deserilizableForMapFromFile(String listString2,Class<T> clazz) throws IOException {
Map<K, T> map = JSON.parseObject(listString2, new TypeReference<Map<K, T>>() {});
return (HashMap<K, T>) map;
}
//使用方法 注意Entity為隨機(jī)定義,使用時(shí)用自己的類(lèi)名替換下就可以用了
/*String pathName = "src/test/java/com/...../resources/file.json";
List<Entity> entityList = new ArrayList<Entity>();
JsonSerilizable.serilizableForList(entityList, pathName);
List<Entity> entityList2 = JsonSerilizable
.deserilizableForListFromFile(pathName, Entity.class);
HashMap<Integer, Entity> Map = new HashMap<Integer, Entity>();
JsonSerilizable.serilizableForMap(Map, pathName);
HashMap<Integer, Entity> Map2 = JsonSerilizable
.deserilizableForMapFromFile(pathName, Entity.class);*/
}
測(cè)試?yán)樱?/p>
//將map轉(zhuǎn)換成byte[]
protected byte[] changeMapToByte(Map<String,String> map) {
byte[] bytes = null;
try {
bytes = JsonSerilizable.serilizableForMap(map).getBytes();
} catch (Exception e) {
baselog.error("map到byte[]轉(zhuǎn)換異常",e);
}
return bytes;
}
//將byte[]轉(zhuǎn)換成map
protected Map<String, String> changeByteToMap(byte[] bytes) {
Map<String, String> retmap = null;
try {
if(bytes != null) {
retmap = JsonSerilizable.deserilizableForMapFromFile(new String(bytes), String.class);
}else {
baselog.error("changeByteToMap中bytes為null");
}
} catch (Exception e) {
baselog.error("byte到map轉(zhuǎn)換異常",e);
}
return retmap;
}
以上就是Java實(shí)現(xiàn)byte[]轉(zhuǎn)List的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于Java byte[]轉(zhuǎn)List的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):循環(huán)鏈表和棧
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之循環(huán)鏈表、棧的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Java數(shù)據(jù)結(jié)構(gòu)中循環(huán)鏈表、棧、的功能、定義及使用方法,需要的朋友可以參考下2021-08-08
java中關(guān)于文本文件的讀寫(xiě)方法實(shí)例總結(jié)
這篇文章主要介紹了java中關(guān)于文本文件的讀寫(xiě)方法,實(shí)例總結(jié)了Java針對(duì)文本文件讀寫(xiě)的幾種常用方法,并對(duì)比了各個(gè)方法的優(yōu)劣及特點(diǎn),具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
java啟動(dòng)jar包修改JVM默認(rèn)內(nèi)存問(wèn)題
這篇文章主要介紹了java啟動(dòng)jar包修改JVM默認(rèn)內(nèi)存問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
springboot+dynamicDataSource動(dòng)態(tài)添加切換數(shù)據(jù)源方式
這篇文章主要介紹了springboot+dynamicDataSource動(dòng)態(tài)添加切換數(shù)據(jù)源方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
java書(shū)店系統(tǒng)畢業(yè)設(shè)計(jì) 總體設(shè)計(jì)(1)
這篇文章主要介紹了java書(shū)店系統(tǒng)畢業(yè)設(shè)計(jì),第一步系統(tǒng)總體設(shè)計(jì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10
詳解spring cloud hystrix請(qǐng)求緩存(request cache)
這篇文章主要介紹了詳解spring cloud hystrix請(qǐng)求緩存(request cache),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
Springboot Activemq整合過(guò)程代碼圖解
這篇文章主要介紹了Springboot Activemq整合過(guò)程代碼圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02

