Java实现byte[]转List的示例代码

 更新时间:2022年02月26日 16:11:15   作者:剑客·阿良  
byte,即字节,由8位的二进制组成。在Java中,byte类型的数据是8位带符号的二进制数。List 是一个接口,它继承于Collection的接口。它代表着有序的队列。本文将介绍如何通过java实现byte[]转List,需要的可以参考一下

前言

其实这个工具是给自己写的,因为自己老是忘记。所以记录一下。

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;
    }

以上就是Java实现byte[]转List的示例代码的详细内容,更多关于Java byte[]转List的资料请关注脚本之家其它相关文章!

相关文章

  • java数据结构基础:循环链表和栈

    java数据结构基础:循环链表和栈

    这篇文章主要介绍了Java数据结构之循环链表、栈的实现方法,结合实例形式分析了Java数据结构中循环链表、栈、的功能、定义及使用方法,需要的朋友可以参考下
    2021-08-08
  • java中关于文本文件的读写方法实例总结

    java中关于文本文件的读写方法实例总结

    这篇文章主要介绍了java中关于文本文件的读写方法,实例总结了Java针对文本文件读写的几种常用方法,并对比了各个方法的优劣及特点,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • java启动jar包修改JVM默认内存问题

    java启动jar包修改JVM默认内存问题

    这篇文章主要介绍了java启动jar包修改JVM默认内存问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • springboot+dynamicDataSource动态添加切换数据源方式

    springboot+dynamicDataSource动态添加切换数据源方式

    这篇文章主要介绍了springboot+dynamicDataSource动态添加切换数据源方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • java书店系统毕业设计 总体设计(1)

    java书店系统毕业设计 总体设计(1)

    这篇文章主要介绍了java书店系统毕业设计,第一步系统总体设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • 详解spring cloud hystrix请求缓存(request cache)

    详解spring cloud hystrix请求缓存(request cache)

    这篇文章主要介绍了详解spring cloud hystrix请求缓存(request cache),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Springboot Activemq整合过程代码图解

    Springboot Activemq整合过程代码图解

    这篇文章主要介绍了Springboot Activemq整合过程代码图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Java顺序查找算法详解

    Java顺序查找算法详解

    顺序查找又称线性查找,主要用于在线性表中进行查找。顺序查找通常分为对一般的无序线性表的顺序查找和对按关键字有序的顺序表的顺序查找,下面我们来一探究竟
    2022-08-08
  • Spring中Eureka的服务下线详解

    Spring中Eureka的服务下线详解

    这篇文章主要介绍了Spring中Eureka的服务下线详解,根据默认的策略,如果在一定的时间内,客户端没有向注册中心发送续约请求,那么注册中心就会将该实例从注册中心移除,需要的朋友可以参考下
    2023-11-11
  • Java中的异常和处理机制实例详解

    Java中的异常和处理机制实例详解

    这篇文章主要介绍了Java中的异常和处理机制,结合实例形式详细分析了Java异常与处理机制的相关概念、原理、用法及操作注意事项,需要的朋友可以参考下
    2019-05-05

最新评论