验证数组内容是否只是重复相同值的最有效方法是什么?
我正在从输入流中读取数据以进行查找:
keysz=new byte[sz];
while((c=bis.read(keysz,pos,sz))>0){
if(keysz contains all zeroes) break;
pos+=sz;
dec.write(hm.get(keysz.toString()));
}
但是,如果数组在迭代中包含全零('0000'),我需要突破。
请注意,数组的大小将是动态的。
答案 0 :(得分:2)
如果你知道应该重复的值,你可以这样做:
public boolean allRepetitions (Byte[] array, Byte value){
return Collections.frequency(Arrays.asList(array), value) == array.length;
}
否则,您可以使用Set检查是否重复所有元素:
public boolean allRepetitions (Byte[] array){
return new HashSet<Byte>(Arrays.asList(array)).size() == 1;
}
您需要使用Byte []而不是byte []将其转换为List
答案 1 :(得分:0)
public bool IsAllZero(byte[] myArr)
{
while(int i=0; i<myArr.length; i++)
{
if(myArr[i] != 0)
return false;
}
return true;
}
答案 2 :(得分:0)
/* Check that all elements of arr equal val */
public static boolean allEqualTo(byte[] arr, byte val) {
for (int i = 0; i < arr.length; ++i) {
if (arr[i] != val) {
return false;
}
}
return true;
}
/* Check that all elements of arr have the same value */
public static boolean allSame(byte[] arr) {
if (arr == null || arr.length == 0) {
return true;
}
return allEqualTo(arr, arr[0]);
}