[英]Is there an elegant way (short and efficient) to compare if all the values in 1 int[] array are lesser than or equals to another int[] array?
[英]efficient way to compare multiple int values to 0
我正在嘗試將三個長度與 0 進行比較,並且想知道是否有比重復“.= 0”更有效/更清潔的方法。
public static boolean isTriangle(int lengthA, int lengthB, int lengthC) {
if (lengthA != 0 && lengthB != 0 && lengthC != 0) { //is there a shorter/cleaner way to write this?
//do a thing
}
return false;
}
您可以使用IntStream
和allMatch
if(IntStream.of(lengthA,lengthB,lengthC).allMatch(i->i!=0)) {
// do a thing
}
或者也使用noneMatch
IntStream.of(lengthA,lengthB,lengthC).noneMatch(i->i==0)
另一種方法是使用 util 方法
public static boolean isNotZero(int val) {
return val!=0;
}
現在簡化if
條件
if (isNotZero(lengthA) && isNotZero(lengthB) && isNotZero(lengthC)) {
最佳答案(恕我直言): “甚至不要試圖猜測優化編譯器。” 只需以最准確地指定(對你的同胞,僅此而已......)你希望計算機做什么的方式指定源代碼。 不要假定實際提供給硬件的機器指令的實際序列實際上與此相對應。 “這很神奇。真的。”
你在問三件事; 你要的代碼是
我有一個替代方案給你:
if ((lengthA & lengthB & lengthC) != 0)
這是正確的 - 它與您的舊代碼相同(它使用按位與)
對於任何提議的替代方案,go 很可能也是如此。
您在原始代碼中所做的已經足夠好了; 這是人們所理解的,並且很可能是您為此目的編寫的最簡潔的代碼。
對於 Java 語言,您的代碼很好。 在 Java 中沒有更好的方法可以做到這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.