2013-03-20 155 views
0

是否可以編寫一段代碼來檢查某個特定類型的所有對象/變量或某個特定類型的所有對象/變量? (無每個創建的if語句)
然後將其設置爲東西,如果真或假。如何一次檢查多個變量?


一樣,如果你有3個變量和...

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

預製棒


或者複雜的例子,4周的ArrayList的註釋中描述的動作類型整數:

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

所以,如果有任何的數組結束了是空的,那麼而非[],他們將返回「零」。

+1

使用在其元素的數組或列表和循環。 – 2013-03-20 23:59:58

回答

3

嗯,如果你想要做一些更有趣才一集的迭代,它看起來非常像功能應用過濾器,然後映射。嘗試lambdaj或谷歌收藏(看到這裏的一個不錯的職位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

我喜歡這個免責聲明......並且希望它能夠被放在心上。 – jahroy 2013-03-21 00:16:37

+0

您提供的鏈接無效 – 2015-07-23 08:55:24

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<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語句,但是你想沒有如果....


你可以很容易地使通用的兩種方法(你必須使用第一個例子中的對象),但我們會離開,你....