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<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 ステートメントを使用し?ますが、if は必要ありません....


両方のメソッドを簡単にジェネリックにすることができます (最初の例ではオブジェクトを使用する必要があります) が、それはあなたに任せます....

于 2013-03-21T00:19:07.663 に答える