0

ArrayList に少なくとも 1 つの ACTIVE ステータスと 1 つの INACTIVE ステータスがあるかどうかを確認するために、各ステータスを繰り返し処理しようとしています。

var active = false;
var inactive = false;
for (item <- reasons.items) {
  if(item.status == "ACTIVE")
    active = true
  if(item.status == "INACTIVE")
    }
active must be (true)
inactive must be (true)

これを行うためのよりクリーンな方法はありますか?このようなストリームを試してみましたが、うまくいきません

var active = false;      
var stream = reasons.items.toStream
        .forEach(item => if(item.status == "ACTIVE") {active = true})

注: 理由はアイテムを保持しています (1 個のアイテムがあります)。items は、reasons.items.get(x) のように呼び出すことができる個々のアイテムを保持します。

4

3 に答える 3

1

"at least 1" の場合、与えられた述語existsitemsどのチェックで使用でき、項目の少なくとも 1 つが基準を満たす場合に true を返します。exists「ACTIVE と INACTIVE」の場合、&& を使用して非効率的なアプローチのために2 つの呼び出しを組み合わせることができます。

reasons.items.exists(_.status.equals("ACTIVE")) && reasons.items.exists(_.status.equals("INACTIVE"))`
于 2018-12-06T20:25:44.043 に答える