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

📅  最后修改于: 2023-12-03 14:43:02.082000             🧑  作者: Mango

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

在Java中,经常会遇到将List或集合转换为数组的情况,而Guava的Longs类提供toArray方法可以非常方便地将List转换为long类型的数组。本文将针对这个方法进行详细介绍并提供示例。

Longs.toArray() 方法简介

Longs类属于Guava库中的一个工具类,它提供了一些针对long类型的操作方法。其中toArray方法的作用是将List<Long>转换为long[]类型的数组。

public static long[] toArray(Collection<? extends Number> collection) {
    if (collection instanceof Longs.LongsAsList) {
        return ((Longs.LongsAsList) collection).toLongArray();
    }

    Object[] boxedArray = collection.toArray();
    int len = boxedArray.length;
    long[] array = new long[len];
    for (int i = 0; i < len; ++i) {
        // java.lang.NullPointerException: null
        // long value = ((Number) Preconditions.checkNotNull(boxedArray[i])).longValue();
        array[i] = ((Number) boxedArray[i]).longValue();
    }
    return array;
}

可以看到,toArray方法接收一个继承自Number的集合类型,返回一个long类型的数组。如果传入的集合本身就是LongsAsList类型,方法直接调用它的toLongArray方法,否则通过循环遍历集合元素获取每个元素的long值并赋值到数组中返回。

示例

下面提供一个简单的示例来演示如何使用Longs.toArray()方法。

import com.google.common.primitives.Longs;

import java.util.ArrayList;
import java.util.List;

public class LongsDemo {
    public static void main(String[] args) {
        List<Long> longs = new ArrayList<>();
        longs.add(1L);
        longs.add(2L);
        longs.add(3L);

        long[] longArray = Longs.toArray(longs);

        for (long num : longArray) {
            System.out.println(num);
        }
    }
}

上述示例中,我们先构造一个包含三个Long类型元素的List,然后调用Longs.toArray()方法将其转化为long类型的数组,并最终输出数组中的元素。

控制台输出:

1
2
3
总结

在Java中将List转换为long[]类型的数组是一项常见的需求,Guava库中的Longs工具类提供了toArray()方法可以非常方便地实现。在使用这个方法时,需要注意的是传入的集合类型必须是继承自Number类型的集合。