将布尔对象数组转换为布尔原始数组? [复制]

Posted

技术标签:

【中文标题】将布尔对象数组转换为布尔原始数组? [复制]【英文标题】:Coverting a Boolean object array to boolean primitive array? [duplicate] 【发布时间】:2011-08-02 16:58:14 【问题描述】:

我有一个 Boolean 类型的 ArrayList,在尝试使用时需要将其作为 boolean[] 进行操作:

AlertDialog builder;
builder.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener()  ... );

然而,虽然我可以创建一个布尔对象数组,但我找不到一种有效的方法来将此对象数组转换为构建器函数调用的原始数组(我能想出的唯一方法是遍历 Object数组并构建一个新的原始数组)。

我正在从 ArrayList 中检索我的 Object 数组,如下所示:

final Boolean[] checkedItems = getBoolList().toArray(new Boolean[getBoolList().size()]);

我可以用我的 ArrayList 做些什么吗?还是我缺少明显的转换/转换方法??

任何帮助表示赞赏!

【问题讨论】:

抱歉,没有看到该条目 - 这与那个问题几乎相同 【参考方案1】:

你没有遗漏任何东西,唯一的办法就是遍历列表,恐怕

一个(未经测试的)示例:

private boolean[] toPrimitiveArray(final List<Boolean> booleanList) 
    final boolean[] primitives = new boolean[booleanList.size()];
    int index = 0;
    for (Boolean object : booleanList) 
        primitives[index++] = object;
    
    return primitives;

编辑(根据 Stephen C 的评论): 或者您可以使用第三方工具,例如 Apache Commons ArrayUtils:

http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/ArrayUtils.html

【讨论】:

+1 - 有 3rd-party 库提供帮助方法来执行此操作,但使用这样的库会带来其他问题。所以滚动你自己的方法(如上)是最简单的解决方案。 @Stephen C:如果您不想使用此类 3rd 方库的许多其他有用功能中的任何一个,并且您想为所需的每种原始类型自己编写它,这是最简单的解决方案这样做。对我来说似乎不值得。世界上这类事情的复制/粘贴实现越少越好。 世界可以飞跃!如果您的工作规则使使用 3rd 方库困难,则项目特定的辅助方法实际上是正确的解决方案。即使没有这样的规则,拉入外部库也会增加依赖管理问题。 (即使使用 Maven ...在某些情况下) Stephen,我倾向于同意你的观点 - 我认为我没有充分利用第三方库来保证对我的用户进行额外的依赖管理和应用程序大小的增加。我尝试使用尽可能多的本地方法! 你需要检查空值。【参考方案2】:

使用Guava,你可以做到boolean[] array = Booleans.toArray(getBoolList());

【讨论】:

感谢您,尽管有很多第三方库可用 - 我担心我没有充分利用它们来保证增加我的应用程序包的整体大小。

以上是关于将布尔对象数组转换为布尔原始数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

VueJS:显示过滤后的数组列表

C#如何 将一个布尔型数组全部 填充为false

如何将Object转换为布尔值?

如何将布尔数组转换为int数组

在 EnumSet 和布尔值数组之间转换

JavaScript数据类型typeof()和转换