我怎樣才能更優雅判斷一個JavaCard的字節數組只包含一個特定的元素作爲顯示在下面的例子:如何知道一個數組只包含的所有元素的特定值
{(byte) 0xAA, (byte) 0xAA, (byte) 0xAA, (byte) 0xAA}
我試圖不編寫循環和if-else來搜索整個數組並匹配它是否僅包含特定元素(上面的示例中爲0xAA)。有什麼方法可以做到嗎?
我怎樣才能更優雅判斷一個JavaCard的字節數組只包含一個特定的元素作爲顯示在下面的例子:如何知道一個數組只包含的所有元素的特定值
{(byte) 0xAA, (byte) 0xAA, (byte) 0xAA, (byte) 0xAA}
我試圖不編寫循環和if-else來搜索整個數組並匹配它是否僅包含特定元素(上面的示例中爲0xAA)。有什麼方法可以做到嗎?
Java Card是一個非常有限的平臺,幾乎沒有花哨的庫。循環和if-else/break通常是你可以做的最好的事情,這樣做沒有錯。
如果陣列有一個固定的(或限制)的大小,您可以創建一個RAM緩存器並使用Util
類和它的靜態方法與字節的值來填充它,然後在一塊全陣列式比較:
private final byte[] temp = JCSystem.makeTransientByteArray(SIZE_LIMIT, JCSystem.CLEAR_ON_DESELECT);
private final boolean containsSameValues(final byte[] arr, final byte value)
{
if (arr.length > SIZE_LIMIT) {
//throw some error code...
}
Util.fillArrayNonAtomic(temp, (short) 0, (short) arr.length, value);
return Util.arrayCompare(arr, (short) 0, temp, (short) 0, (short) arr.length) == 0;
}
但是,這種解決方案可能比普通環路更慢。一切都取決於你的硬件和你的Java Card實現。
你的意思是喜歡用查找表? – TheRealChx101
是的。我試圖實現一個查找數組。我想知道整個數組是否填充了特定的特定元素。 – thotheolh
好的。檢查我的答案。 – TheRealChx101