gpt4 book ai didi

java - 在 EnumSet 和 boolean 值数组之间转换

转载 作者:搜寻专家 更新时间:2023-10-31 08:22:08 25 4
gpt4 key购买 nike

我有一个 EnumSet并希望在 boolean 基元数组之间来回转换。如果效果更好,我可以使用 List而不是数组,和/或Boolean对象而不是 boolean 基元。

enum MyEnum { DOG, CAT, BIRD; }
EnumSet enumSet = EnumSet.of( MyEnum.DOG, MyEnum.CAT );

我想在另一端得到的是一个如下所示的数组:

[TRUE, TRUE, FALSE]

这里的这个问题与这个问题相似,Convert an EnumSet to an array of integers .差异:

  • boolean 值或 boolean 值 与整数(显然)
  • 我希望枚举的所有成员都被表示,EnumSet 中包含的每个枚举元素都有一个 TRUE 和一个 FALSEEnumSet 中排除的每个元素。另一个问题的数组仅包含在 EnumSet 中找到的项目。 (更重要的是)

最佳答案

要做到这一点,你基本上会写

MyEnum[] values = MyEnum.values(); // or MyEnum.class.getEnumConstants()
boolean[] present = new boolean[values.length];
for (int i = 0; i < values.length; i++) {
present[i] = enumSet.contains(values[i]);
}

从另一个方向,从上面创建的 boolean 数组 present 到下面创建的 enumSet_

EnumSet<MyEnum> enumSet_ = EnumSet.noneOf ( MyEnum.class );  // Instantiate an empty EnumSet.
MyEnum[] values_ = MyEnum.values ();
for ( int i = 0 ; i < values_.length ; i ++ ) {
if ( present[ i ] ) { // If the array element is TRUE, add the matching MyEnum item to the EnumSet. If FALSE, do nothing, effectively omitting the matching MyEnum item from the EnumSet.
enumSet_.add ( values_[ i ] );
}
}

关于java - 在 EnumSet 和 boolean 值数组之间转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38366382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com