Java byte[]转List
剑客·阿良 人气:0前言
其实这个工具是给自己写的,因为自己老是忘记。所以记录一下。
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 { /** * 字节组转list * * @param bytes 字节组 * @return List */ public static List<Byte> bytesToList(byte[] bytes) { return Bytes.asList(bytes); } /** * list转字节组 * * @param list list * @return byte[] */ public static byte[] listToBytes(List<Byte> list) { return Bytes.toArray(list); } /** * 截取bytes * * @param bytes 字节组 * @param from 起始位 * @param to 结束位 * @return bytes */ public static byte[] subBytes(byte[] bytes, int from, int to) { return Arrays.copyOfRange(bytes, from, to); } }
代码说明
1、主要通过guava工具包来实现,代码简洁。
补充
java不仅能实现byte[]转List,还能实现Map、List和byte[]互转
Map转换成byte[]可以通过先将Map转换成json,然后再将json转换成byte[],List和byte[]互转思路是一样的。
//将map转换成byte[] protected byte[] changeMapToByte(Map<String,String> map) { byte[] bytes = null; try { bytes = JsonSerilizable.serilizableForMap(map).getBytes(); } catch (Exception e) { baselog.error("map到byte[]转换异常",e); } return bytes; } //将byte[]转换成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转换异常",e); } return retmap; }
JsonSerilizable类代码如下:
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文件中的内容读取出来,反序列化为链表 */ 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文件中的内容读取出来,反序列化为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为随机定义,使用时用自己的类名替换下就可以用了 /*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);*/ }
测试例子:
//将map转换成byte[] protected byte[] changeMapToByte(Map<String,String> map) { byte[] bytes = null; try { bytes = JsonSerilizable.serilizableForMap(map).getBytes(); } catch (Exception e) { baselog.error("map到byte[]转换异常",e); } return bytes; } //将byte[]转换成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转换异常",e); } return retmap; }
加载全部内容