如何一次检查多个变量?

时间:2013-03-20 23:53:06

标签: java arrays arraylist null

是否可以编写一个代码块来检查特定类型的特定类型的所有对象/变量? (不为每个创建if语句)
然后将其设置为true或false。


如果您有3个变量并且......

 if(a=0||b=0||c=0){
//set any variable equal to zero to 4
}

执行评论中描述的操作


或者,复杂的例子,4个整数类型的arraylists:

List<Integer> even = new ArrayList<Integer>(), //positive even ints
odd = new ArrayList<Integer>(), //positive odd ints
negaodd = new ArrayList<Integer>() //negative even ints
negaeven = new ArrayList<Integer>(); //negative odd ints

然后像:

if("AnyArray".isEmpty()){
whatever-array-is-being-tested/tried = null;
}

因此,如果任何数组最终为空,则代替[],它们将返回“null”。

2 个答案:

答案 0 :(得分:3)

嗯,如果你想做一些更有趣的事情然后只是迭代一个集合,它看起来非常实用,就像应用过滤器然后映射一样。尝试lambdaj或google集合(请参阅此处获取一篇精彩的帖子http://codemunchies.com/2009/11/functional-java-filtering-and-ordering-with-google-collections-part-3/)。以下是使用https://code.google.com/p/lambdaj/wiki/LambdajFeatures中的lambdaj的示例。

List<Integer> oddNumbers = filter(odd, asList(1, 2, 3, 4, 5));

请点击此处查看更多可能的想法:What is the best way to filter a Java Collection?

<强>声明 有时候过度使用这种东西(当一个简单的循环就足够了)比代码更混淆代码,所以要小心。

答案 1 :(得分:1)

您可以使用数组或列表以及辅助方法来实现。

int[] intArray = { a, b, c };
setZeroes(intArray);

public void setZeroes(int[] a) {
    for (int i = 0; i < a.length; i++) {
        a[i] = (a[i] == 0) ? a[i] : 4;
    }
}

请注意,这不会将abc设置为0,而是将数组中的元素设置为。

但是......也许它们应该只是数组(或List)的元素。那是我的预感。

您可以使用列表列表执行相同的操作。

List<List<Integer>> listOfLists = new ArrayList<List<Integer>>();
listOfLists.add(listA);
listOfLists.add(listB);
listOfLists.add(listB);
setListsToNull(listArray);

public void setListsToNull(List<List<Integer>> a) {
    for (int i = 0; i < a.length; i++) {
        List<Integer> thisList = a.get(i);
        a.set(i, thisList.isEmpty() ? null : thisList);
    }
}

我通常使用if语句代替?运算符,但你不想要ifs ....


您可以轻松地将这两种方法设为通用(您必须在第一个示例中使用对象),但我们会将其留给您....