1

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


就像如果你有 3 个变量并且......

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

执行评论中描述的操作


或者,复杂的示例,4 个整数类型的数组列表:

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”而不是 []。

4

2 回答 2

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));

有关更多潜在想法,请参见此处:过滤 Java 集合的最佳方法是什么?

免责声明 有时过度使用这种东西(当一个简单的循环就足够了)会使代码更加模糊,所以要小心。

于 2013-03-21T00:01:36.940 回答
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;
    }
}

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

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

你可以用 List of Lists 做同样的事情。

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....


您可以轻松地使这两种方法都通用(对于第一个示例,您必须使用对象),但我们将把它留给您......

于 2013-03-21T00:19:07.663 回答