如何在Java 8中循环通过字节数组?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Java 8中循环通过字节数组?相关的知识,希望对你有一定的参考价值。

我想将以下代码转换为使用Lambda和Streams和/或任何其他Java 8功能。

我是Java 8的新手,并尝试将下面的代码转换为Java 8,但是找不到像'forEach'这样的函数可以满足我的情况。

    private String getMacAddress() 
    InetAddress ip;
    try 
        ip = InetAddress.getLocalHost();
        logger.log(LogLevel.LEVEL_INFO,"Current IP address : " + ip.getHostAddress());
        NetworkInterface network = NetworkInterface.getByInetAddress(ip);
        byte[] mac = network.getHardwareAddress();
        logger.log(LogLevel.LEVEL_INFO,"Current MAC address : ");
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < mac.length; i++) 
            sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));        
        
        return sb.toString();
     catch (UnknownHostException e) 
        logger.log(LogLevel.LEVEL_ERROR,e.getMessage());
     catch (SocketException e)
        logger.log(LogLevel.LEVEL_ERROR,e.getMessage());
    

答案

如果要在Java中使用流,首先必须调用它。集合具有.stream()功能,对于数组,可以按Arrays.stream(mac)使用Arrays-library。

这使您可以使用典型的流功能,例如forEachmapfilter

对于您的特殊情况,我将使用一个映射(将映射字节映射到格式化的字符串),然后将它们连接起来:

String.join("-", 
  Arrays
   .stream(mac)
   .map(e -> String.format("%02X", e))
   .collect(Collectors.toList())
  );

注意,如果要获取数据,则必须由所谓的收集器来收集Java Streams。

以上是关于如何在Java 8中循环通过字节数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过移位将字节插入数组?

如何将字节数组转换为其数值(Java)?

java字节数组如何判断实际元素个数。

Java:如何“修剪”字节数组?

在java中如何把字节数组存储到数据库?

在 Java 中使用字节缓冲区创建数据包字节数组