本文介绍了在EnumSet和布尔值数组之间转换的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个,并希望来回转换为布尔基元数组。如果效果更好,我可以使用代替数组,和/或对象而不是布尔基元。
I have an EnumSet
and want to convert back-and-forth to/from an array of boolean primitives. If it works better, I could work with a List
instead of an array, and/or Boolean
objects rather than boolean primitives.
enum MyEnum { DOG, CAT, BIRD; }
EnumSet enumSet = EnumSet.of( MyEnum.DOG, MyEnum.CAT );
另一端要获得的是一个如下所示的数组:
What I want to get on the other end is an array that looks like this:
[TRUE, TRUE, FALSE]
这里的问题与此类似,。差异:
This Question here is similar to this one, Convert an EnumSet to an array of integers. Differences:
- 布尔值或
布尔值
与整数(显然) - 我想要枚举枚举的所有成员,包含在
EnumSet $中的每个枚举元素
TRUE
c $ c>和FALSE
,用于从EnumSet
中排除的每个元素。另一个问题的数组只包含EnumSet
中找到的项目。 (更重要的是)
- boolean or
Boolean
versus integers (obviously) - I want all members of the enum to be represented, with a
TRUE
for each enum element included in theEnumSet
and aFALSE
for each element that is excluded from theEnumSet
. The other Question’s array includes only the items found in theEnumSet
. (more importantly)
推荐答案
b
$ b
To do that you'd basically write
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]);
}
走向另一个方向,从布尔数组 present
以上创建的 enumSet _
Going the other direction, from boolean array present
created above to enumSet_
created below.
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 ] );
}
}
这篇关于在EnumSet和布尔值数组之间转换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!