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调用的是“引擎盖下”。