Java 存储预定条件的数组

Java 存储预定条件的数组,java,arrays,boolean,Java,Arrays,Boolean,我正在尝试创建一个静态实用程序方法,它接受类a的单个输入,这些类的实例被赋予了自己唯一的id,并检索一个布尔值,该值描述某个特征是否适用于它们。没有模式来描述这种关系;在没有公式的情况下,首先想到的两个选项是包含所有真实ids的静态final int[],或者一组“or”|测试。有没有其他更好的选择,或者使用其中一种方法比使用另一种方法有什么特别的优势?这项任务不是什么了不起的壮举,但我希望它简单易懂 下面是一个示例,帮助您大致了解我的意思: public class UtilitiesA {

我正在尝试创建一个静态实用程序方法,它接受类
a
的单个输入,这些类的实例被赋予了自己唯一的
id
,并检索一个
布尔值,该值描述某个特征是否适用于它们。没有模式来描述这种关系;在没有公式的情况下,首先想到的两个选项是包含所有真实
id
s的
静态final int[]
,或者一组“or”
|
测试。有没有其他更好的选择,或者使用其中一种方法比使用另一种方法有什么特别的优势?这项任务不是什么了不起的壮举,但我希望它简单易懂

下面是一个示例,帮助您大致了解我的意思:

public class UtilitiesA {

    // first method of retrieval- static storage array
    private static int[] validIds = {
        A.instanceM.id, A.instanceZ.id, A.instanceL.id, A.instanceF.id, A.instanceP.id
    };

    public static boolean getHasCharacteristic(A input) {
        for (int id : validIds) if (a.id == id) return true;
        return false;
    }
    // vs the second method...
    public static boolean getHasCharacteristic2(A input) {
        return (input.id == A.instanceM.id ||
                input.id == A.instanceZ.id ||
                input.id == A.instanceL.id ||
                input.id == A.instanceF.id ||
                input.id == A.instanceP.id)
    }
}
第二个我认为更直观,但也更重复。如果您有任何建议,我们将不胜感激。

那么:

private static Integer[] validIds = {
    A.instanceM.id, A.instanceZ.id, A.instanceL.id, A.instanceF.id, A.instanceP.id
};

public static boolean getHasCharacteristic3(A input) {
       return Arrays.asList(validIds).contains(input.id)
   }
如果要经常调用此函数,可以首先将所有ID存储在一个列表中,而不是存储在一个数组中,这样就不必将数组转换为列表来使用列表的contains方法


请注意,如果将其保存在一个数组中,则它必须是整数数组而不是整数。

第二个数组虽然看起来很简单,但如果valids中的内容更多,则不便于编码。对于数组中的每个值,都必须进行检查。如果内容的数量更多,则可能会丢失一个或其他值。因此,建议您使用for循环进行迭代,就像您在第一个实现中所做的那样

是的,它将以20Hz的频率每周期运行大约0-10次,因此有点频繁。那么,我可能最终会将数据存储为一个列表。您的第一个选项同样有效,我不知道这会运行得更好或更差,但您可以用一行代码来调用它。我很喜欢它的简洁性。。可能会尝试找出List.contains调用的是“引擎盖下”。