📌  相关文章
📜  Java番石榴 |带有示例的 Bytes.toArray() 方法(1)

📅  最后修改于: 2023-12-03 15:02:05.300000             🧑  作者: Mango

Java番石榴 |带有示例的 Bytes.toArray() 方法

Byte 类型是 Java 中数值类型之一,表示占有 8 位的有符号整数,范围是从 -128 到 127。Bytes 类是 Google Guava 中的一个类,提供了一些方法来操作 Byte 类型的数组。其中一个常用的方法是 toArray(),它的作用是将 Bytes 转换成 byte 数组。

语法
public static byte[] toArray(Iterable<Byte> iterable)

toArray() 方法接收一个 Byte 类型的 Iterable,返回一个 byte 数组。它的实现方式如下:

public static byte[] toArray(Iterable<Byte> iterable) {
    // 计算数组长度
    long size = MoreIterables.size64(iterable);
    checkArgument(size <= Integer.MAX_VALUE, "Too many elements: %s", size);
    byte[] result = new byte[(int) size];

    // 将 Byte 类型转换成 byte 类型
    int index = 0;
    for (Byte b : iterable) {
        result[index++] = b;
    }
    return result;
}

如上代码所示,toArray() 方法的实现方式如下:

  1. 首先计算数组长度,使用的是 MoreIterables.size64() 方法,还用 checkArgument() 方法判断 length 是否超过了 int 类型的范围。
  2. 创建一个 byte 类型的数组 result。
  3. 将 Byte 类型的 iterable 中的元素转换成 byte 类型的数组,并将其返回。
示例

下面是一段使用 Guava 的 toArray() 方法的示例代码:

import com.google.common.primitives.Bytes;
import java.util.ArrayList;
import java.util.List;

public class Example {
    public static void main(String[] args) {
        List<Byte> list = new ArrayList<>();
        list.add((byte)1);
        list.add((byte)2);
        list.add((byte)3);

        byte[] result = Bytes.toArray(list);

        System.out.println(Arrays.toString(result)); // [1, 2, 3]
    }
}

上面的代码展示了如何将 List 类型的对象转换成 byte 数组。我们先创建了一个 List 对象 list,并将 (byte)1、(byte)2 和 (byte)3 添加到其中。接着,传递给 Bytes.toArray() 方法,它将返回一个 byte 数组 result,值为 [1, 2, 3]。

要注意的是,如果传递给 toArray() 方法的 iterable 为空,则返回的是一个长度为零的 byte 数组。