簡體   English   中英

使用java 8流解析字符串

[英]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();

收集改編自https://stackoverflow.com/a/32470838/3255152的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM