如何在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。
这使您可以使用典型的流功能,例如forEach
,map
或filter
。
对于您的特殊情况,我将使用一个映射(将映射字节映射到格式化的字符串),然后将它们连接起来:
String.join("-", Arrays .stream(mac) .map(e -> String.format("%02X", e)) .collect(Collectors.toList()) );
注意,如果要获取数据,则必须由所谓的收集器来收集Java Streams。
以上是关于如何在Java 8中循环通过字节数组?的主要内容,如果未能解决你的问题,请参考以下文章