[英]Parse string with java 8 streams
我有像“192.168.1.1”這樣的ip地址字符串。 是否可以使用java 8流解析字符串並獲得原始字節數組。 目前我有代碼
Arrays.stream(address.split("\\."))
.map(UnsignedBytes::parseUnsignedByte)
.toArray(Byte[]::new);
其中UnsignedBytes是返回字節的guava類,但此代碼返回Byte []而不是byte []
更新:是的,我讀到了為什么沒有ByteStream類。 我的問題是,是否可以使用java-8流獲取字節數組,而無需創建中間列表等開銷。
您可以使用Java的InetAddress類。
InetAddress i = InetAddress.getByName("192.168.1.1");
byte[] bytes = i.getAddress();
您可以使用Pattern.splitAsStream(CharSequence)
在收集器中使用ByteArrayOutputStream
:
byte[] bytes = Pattern.compile("\\.")
.splitAsStream(address)
.mapToInt(Integer::parseInt)
.collect(
ByteArrayOutputStream::new,
ByteArrayOutputStream::write,
(baos1, baos2) -> baos1.write(baos2.toByteArray(), 0, baos2.size())
)
.toByteArray();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.